LINUX.ORG.RU

есть вопрос по библиотекам


0

0

Написал программу. Она использует библиотеки (Qt4 и opencv) теперь надо ее как то запускать на других машинах. (только на linux подобных) На машине(на которой я писал прогу) ldd выдает следующее:    libcv.so.4 => /usr/local/lib/libcv.so.4 (0x002e7000)    libcvaux.so.4 => /usr/local/lib/libcvaux.so.4 (0x00686000)    libcxcore.so.4 => /usr/local/lib/libcxcore.so.4 (0x00c9a000)    libhighgui.so.4 => /usr/local/lib/libhighgui.so.4 (0x00f40000)    libQtXml.so.4 => /usr/lib/libQtXml.so.4 (0x00110000)    libQtGui.so.4 => /usr/lib/libQtGui.so.4 (0x040dc000)    libQtCore.so.4 => /usr/lib/libQtCore.so.4 (0x008d9000) и т.п. Ну я запустил кноппикс. и посмотрел что выдает там ldd: Естественно, он сообщает что не хватает выше описанных библиотек. Я не рублю в этом. файлы *.so.4 являются ссылками на библиотеки .so.4.5.2 и т.п. (они имеют больший размер) Скопировал эти библиотеки в папку с прогой. Запустил на кноппиксе - не запускается пишет «не найдена библиотека».

Как вообще это правильно делать?


Ответ на: комментарий от ananas

path

Написал скрипт для создания ссылок и добавления пути в ld_library_path [code] #!/bin/bash ln -s $PWD/lib/libcv.so.4.0.0 $PWD/lib/libcv.so.4 ... ln -s $PWD/lib/libQtCore.so.4.5.2 $PWD/lib/libQtCore.so.4 export LD_LIBRARY_PATH=$PWD/lib:${LD_LIBRARY_PATH} echo $LD_LIBRARY_PATH [/code] Скрипт выполняется успешно. Но почему после выполнения скрипта LD_LIBRARY_PATH обнуляется?

towa
() автор топика
Ответ на: path от towa

Лучше сразу запускать программу с нужными переменными:

LD_LIBRARY_PATH=./lib ./myprog

Или посмотри man ld.so насчет $ORIGIN

unsigned ★★★★
()

линкуй статически

lester ★★★★
()

компилируй статически.

isden ★★★★★
()
Ответ на: path от towa

> Но почему после выполнения скрипта LD_LIBRARY_PATH обнуляется?

потому что скрипт выполняется в дочерней оболочке. export делает переменную видимой только для потомков, но не для родителя.

ananas ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.