OpenCV в ubuntu 11.10

#c #c #opencv #ubuntu

#c #c #opencv #ubuntu

Вопрос:

Я только что обновил свою систему с ubuntu 11.04 до 11.10, и теперь я больше не могу компилировать какие-либо программы на C, содержащие ссылки на библиотеки OpenCV

Я уже пытался переустановить OpenCV (я использую версию 2.1), но я застрял с этой ошибкой:

 /tmp/ccArHTZL.o: In function `main':
z.c:(.text 0x59): undefined reference to `cvLoadImage'
z.c:(.text 0xa0): undefined reference to `cvNamedWindow'
z.c:(.text 0xb1): undefined reference to `cvShowImage'
z.c:(.text 0xbb): undefined reference to `cvWaitKey'
z.c:(.text 0xc5): undefined reference to `cvDestroyWindow'
z.c:(.text 0xd1): undefined reference to `cvReleaseImage'
collect2: ld returned 1 exit status
  

Чтобы установить OpenCV, я всегда следовал этой процедуре:

 $ sudo apt-get install libcv2.1 libcv-dev libcvaux2.1 libcvaux-dev libhighgui2.1
     libhighgui-dev opencv-doc python-opencv

$ export LD_LIBRARY_PATH=/home/opencv/lib
$ export PKG_CONFIG_PATH=/home/opencv/lib/pkgconfig

$ pkg-config --cflags opencv
     -I/usr/include/opencv

$ pkg-config --libs opencv
     -lcxcore -lcv -lhighgui -lcvaux -lml

$ g   -I/usr/include/opencv -lcxcore -lhighgui -lm hello.c
  

Кто-нибудь может мне помочь?

Ответ №1:

Почему бы вам не использовать pkg-config в свою пользу?

 g   hello.c -o hello `pkg-config --cflags --libs opencv` 
  

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

1. Вы всегда должны помещать библиотеки в конец строки: gcc test.c pkg-config --cflags opencv -o test pkg-config opencv --libs . Каким-то образом это стало важным после того, как я обновил Ubuntu до 11.10.

2. Ребята, этот совет, положить конец библиотекам .. о боже, вы спасли меня от очередного разочарования!

3. ДА!!!!!!!! @DimitarSlavchev вы только что исправили почти две недели сердечной боли, головной боли и боли! Спасибо вам!

Ответ №2:

Я думаю, это из-за некоторых изменений с gcc 4.5 на gcc 4.6

Попробуйте вместо этого эту команду (т. Е. Переместите библиотеки в конец, а не в начало вашей командной строки) — это работает для меня:

g -I/usr/include/opencv привет.c -lcxcore -lhighgui -lm

Ответ №3:

Я все еще на kubuntu 10.10, поэтому я не совсем знаком с тем, как работает 11.10, но наиболее распространенным ответом на проблемы с отсутствием библиотек является использование ldconfig с sudo. Это обновит базу данных библиотек. Если это не поможет, загляните в /usr/lib , /usr/lib64 и /usr/lib32, потому что это место по умолчанию, куда apt-get вставляет библиотеки. Когда вы найдете библиотеки, измените LD_LIBRARY_PATH, чтобы он содержал каталог. Я не думаю, что /home/opencv/ lib находится там, где они есть, но я не знаю вашей среды

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

1. Я нашел все libcv.so библиотеки внутри /usr/lib . Затем я предоставил изменить путь export LD_LIBRARY_PATH=/usr/lib , но я продолжаю получать ту же ошибку

2. Я не эксперт по компоновщикам, но вы пытались скомпилировать его, не вмешиваясь в PKG_CONFIG и LD_LIBRARY_PATH? я полагаю, что, если вы не скомпилировали некоторые библиотеки из исходного кода, значения по умолчанию в порядке. Другое дело, что, как я вижу, вы используете g для компиляции программы на C. Существует небольшая вероятность того, что это проблема. Вы также можете попробовать, работает ли c api. просто чтобы убедиться, что проблема заключается в стороне компоновщика-библиотек-поиска, а не в самой библиотеке.

Ответ №4:

Я только что обновился до 11.04 на своем ноутбуке и столкнулся с аналогичными проблемами. Я бы попробовал собрать последнюю версию OpenCV (2.3.1) и посмотреть, исправит ли это что-нибудь, это, похоже, решило для меня немало проблем.

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

1. Ранее я пробовал версию 2.3.1, но столкнулся с МНОЖЕСТВОМ ПРОБЛЕМ, которые вынудили меня перейти на версию 2.1. Так что, к сожалению, для меня обновление до 2.3.1 не вариант

Ответ №5:

Используйте следующую команду, она сработала для меня:

gcc pkg-config --cflags opencv opencv.c -o open_cv pkg-config --libs opencv