Я установил 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 файлы из нового расположения папки, чтобы заставить мой код работать.
Я вижу три способа:
1. Обновите свой LD_LIBRARY_PATH
- добавьте путь к вашим библиотекам перед запуском g++
.
2. Добавьте каталог, в котором находятся ваши библиотеки, в /etc/ld.so.conf
и запустите:
sudo ldconfig
Затем запустите g++
.
3. Создайте новый файл: /etc/ld.so.conf.d/local.conf
и добавьте путь к каталогам с вашими библиотеками и запустите:
sudo ldconfig
Затем запустите g++.
ls -l
для просмотра списка ссылок.