Использование общих объектных файлов

1

Я установил opencv 2.4.3 на ubuntu 12.04, используя cmake. Во время установки файлы.so были помещены в каталог /usr/local/lib. Когда я компилирую свой код, используя следующую строку в терминале, используя расположение файлов.so (по умолчанию /usr/local/lib) по умолчанию, тогда он отлично работает

g++ fileName.cpp -lopencv_core -lopencv_highgui -lopencv_imgproc 

Я пытаюсь экспериментировать с общими объектными файлами. Я скопировал необходимые файлы общих объектов из /usr/local/bin и поместил их в новое местоположение папки /home/nishant/Desktop/lib. Я скопировал следующие файлы и их файлы.so.2.4 и.so.2.4.3:
1) libopencv_core.so
2) Неизвестный Неизвестный
3) libopencv_imgproc.so

Затем я заменил имена на libcore.so, libhighgui.so и libimgproc.so соответственно. Я изменил их имя, чтобы старые файлы.so не должны использоваться из /usr/local/lib. Теперь, когда я пытаюсь скомпилировать свой код с использованием общих файлов объектов в новой папке, я получаю следующую ошибку:

Команда терминала:

g++ filename.cpp -L/home/nishant/Desktop/lib -lcore -lhighgui -limgproc

Ошибка:

/usr/bin/ld: cannot find -lcore
/usr/bin/ld: cannot find -lhighgui
/usr/bin/ld: cannot find -limgproc
collect2: ld returned 1 exit status


Интересно отметить, что следующие работы:

g++ filename.cpp -L/home/nishant/Desktop/lib -lopencv_core -lopencv_highgui -lopencv_imgproc

Причина. Используются файлы.so из /usr/local/lib.

Мой вопрос: как я могу использовать.so файлы из нового расположения папки, чтобы заставить мой код работать.

  • 0
    Вы уверены, что /home/nishant/Desktop/lib/libcore.so является фактическим библиотечным файлом, или если нет, то символическая ссылка указывает на правильный путь? если вы просто переименовали символические ссылки, вы не измените их цель, и вам придется воссоздать ссылки на переименованную цель. используйте ls -l для просмотра списка ссылок.
Теги:
opencv
shared-libraries

1 ответ

1

Я вижу три способа:

1. Обновите свой LD_LIBRARY_PATH - добавьте путь к вашим библиотекам перед запуском g++.

2. Добавьте каталог, в котором находятся ваши библиотеки, в /etc/ld.so.conf и запустите:

sudo ldconfig

Затем запустите g++.

3. Создайте новый файл: /etc/ld.so.conf.d/local.conf и добавьте путь к каталогам с вашими библиотеками и запустите:

sudo ldconfig

Затем запустите g++.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню