Я пытался собрать и использовать OpenCV 2.3.0 на моей 64-битной машине Fedora15 Lovelock.
Фон:
Во-первых, на моей 64-битной Fedora15 OpenCV2.2.0, кажется, находится в местах, а именно
/usr/share/opencv
/usr/doc
/usr/lib64 &
/usr/bin
Однако я не нахожу включаемых файлов (в /usr/include). Это означает, что пакет разработки не был установлен. Мой менеджер пакетов не отображает пакеты разработки, когда я пытаюсь добавить/удалить программное обеспечение.
Мне нужно создавать приложения, некоторые из которых просто ссылаются на 2.2, а другие ссылаются на 2.3.O библиотеки OpenCV. Итак, я подумал, что лучшим решением будет иметь отдельное место для сторонних библиотек, которые я использую для мое развитие. Поэтому я создал каталог в /local с именем soft и создал каталог OpenCV. Такая структура каталогов.
/local/soft/
OpenCV/
OpenCV2.2.0/
source-files
build
OpenCV2.3.0/
source-files
build
installation
share/opencv
doc
include
lib
Теперь я попытался собрать OpenCV2.3.0, и мне это удалось. Я настраиваю CMake на использование CMAKE_INSTALL_PREFIX для каталога с именем «установка» (см. выше) вместо стандартного /usr/local/. Чистый. хм?
Я попытался собрать и установить OpenCv 2.2.0 таким же образом. Увы 2.2.0 что-то жалуется при сборке. Поэтому я подумал, что дам ссылку на уже существующую версию в стандартных местах. НО, когда я пытаюсь установить пакеты dev для 2.2 с помощью моего менеджера пакетов, файлы разработки для x86_64 не найдены :-), что означает, что у меня нет заголовков для ссылки на библиотеки в стандартном месте.
Я не могу собрать свой исполняемый файл, так как компоновщик ld не найдет OpenCV, который я установил в нестандартном месте (хотя я указываю его точное местоположение, используя параметры -L и -l с gcc в моем затмении).
Вопрос 1: Правильно ли я поступаю, поддерживая установки в нестандартных местах? Является ли /usr/ стандартным местом, где менеджер пакетов всегда будет выполнять установку?
Вопрос 2: Как правильно подключить эти библиотеки, установленные в нестандартных местах? Почему ld не распознает мои файлы .so в папке lib?
sudo g++ logpolar.cpp -o logpolar.o -I /local/soft/OpenCV/opencv2.3.1/installation/include/ -l/local/soft/OpenCV/opencv2.3.1/build/lib/libopencv_core.so
Но ld не может найти -l/local/soft/OpenCV/opencv2.3.1/build/lib/libopencv_core.so
Я проверил папку lib и уверен, что там есть красивая символическая ссылка на libopencv_core.so.2.3.