2017-01-23 3 views
0

Я хотел бы запустить свою программу на другом компьютере, у которого нет установленных библиотек. Я создаю свою программу в QT с помощью openCV и скопировал все необходимые .so libs в папку со всеми моими файлами. Затем я изменил пути в QT .pro дляКак правильно связать библиотеки библиотек Linux в qt?

INCLUDEPATH += ../

LIBS += -L../ -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lopencv_core.

Я скомпилировал, что на моем компьютере (Linux), и он работал, но я хочу, чтобы работать на другом компьютере без компиляции. На компьютере моего друга двоичный файл не работает. Я получаю сообщение об ошибке:

./displayImage: error while loading shared libraries: libopencv_highgui.so.3.1: cannot open shared object file: No such file or directory

+0

Вы действительно отправили все части библиотеки? Очевидно, что он не может найти opencv_highgui SO. Возможно, библиотека opencv_highgui требуется другими opencv-библиотеками (** readelf ** может не сообщать об этом при запуске на вашем .elf), или, возможно, он ищет библиотеки libopencv_xyz.so без основных/второстепенных версий в имени файла («длинные имена», как правило, для символической ссылки в/usr/lib). Каков результат работы ** readelf ** в вашем выходном файле? –

+0

Весь вывод readelf файлов, которые я добавил в папку с файлами проекта libopencv_highgui.so.3.1 libopencv_imgcodecs.so.3.1 [libopencv_imgcodecs.so.3.1 libopencv_core.so.3.1 ... –

+0

Это может помочь, если вы задаете систему спецификаций и версий. – ilke444

ответ

2

Установить переменную окружения LD_LIBRARY_PATH в каталог, который вы запускаете его из.

Если ваши файлы находятся в /home/abc/cool/program/displayImage (и эта папка содержит все файлы .so, которые нужны ваша программа для запуска)

$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/abc/cool/program/ 
$ ./displayImage 
1

Вы также можете добавить файл <whatever>.conf в /etc/ld.so.conf.d и положить одну или несколько строк с именами ваших библиотек.

Затем запустить ldconfig. Это необходимо только один раз.