OpenCV 3.0 из исходников и pkg-config в Ubuntu 15.04

Рейтинг: 1Ответов: 1Опубликовано: 26.04.2015

Был когда-то собран OpenCV 3.0 beta из исходников. Подключал его в QtCreator 3.4.0 (Qt5.4.1) через pkg-config в Ubuntu 14.10:

unix {
   CONFIG += link_pkgconfig
   PKGCONFIG += opencv
}

Проекты нормально собирались, запускались и работали.

Вышли новая Ubuntu 15.04 и OpenCV 3.0 rc1. Обновил первое и пересобрал заново второе.

Сборка собственных проектов проходит на ура, все внешние зависимости подключаются, однако теперь при запуске программы из QtCreator или просто из терминала выдаёт, что не может найти подключаемые библиотеки OpenCV. Я понимаю, что можно просто указать переменную среды окружения LD_LIBRARY_PATH, но хотелось бы в общих чертах понять, а что собственно изменилось и как сделать так, чтобы было как раньше.

Update: Команда ldd на проект выдаёт следующее:

linux-gate.so.1 =>  (0xb77cc000)
libopencv_core.so.3.0 => not found
libopencv_features2d.so.3.0 => not found
libopencv_highgui.so.3.0 => not found
libopencv_imgcodecs.so.3.0 => not found
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xb76ae000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb7661000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb7644000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb7488000)
/lib/ld-linux.so.2 (0xb77cd000)

OpenCV установлен в "/usr/local/lib". Складывается ощущение, что "/usr/local" перестала видеться как место хранения библиотек. Я правильно понимаю?

Ответы

▲ 1Принят

Скорее всего система не может найти библиотеки. Есть несколько способов решения этой проблемы.

Первый заключается в добавлении пути в переменную LD_LIBRARY_PATH (список путей, по которым система ищет библиотеки). Для этого небходимо перед запуском программы выполнить команду:

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib"

Она добавляет путь /usr/local/lib в конец переменной.

Второй способ заключается в изменении системных настроек. Для этого в директории /etc/ld.so.conf.d/ создайте файл с именем, например, 99local.conf, содержащий путь к библиотекам. (В вашем случае /usr/local/lib.)

Для того, чтобы изменения вступили в силу выполните от имени root команду ldconfig.

Третий способ — использование параметра -rpath компилятора gcc, который позволяет явно указать путь к библиотеке.