在Ubuntu 11.10上使用OpenCV

3

我刚刚将我的系统从Ubuntu 11.04升级到11.10,现在我无法编译任何包含对OpenCV库的引用的C程序。

我已经尝试重新安装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

有没有人能帮帮我?

5个回答

6
为什么不利用 pkg-config 呢?
g++ hello.c -o hello `pkg-config --cflags --libs opencv` 

3
在编译时,应将库放置在行末:gcc test.c pkg-config --cflags opencv -o test pkg-config opencv --libs。在我升级Ubuntu到11.10后,这似乎变得很重要。 - Dimitar Slavchev
放置库到最后面,这个建议太好了!天哪,你救了我一次又一次的挫败感! - Naomak
耶!!!!!!@DimitarSlavchev,你刚刚解决了近两周的心痛、头痛和痛苦!谢谢你! - Wes Miller

2
我认为这是由于gcc 4.5到gcc 4.6的一些更改所致。
请尝试使用以下命令(即,将库移到命令行的末尾而不是开头) - 这对我有效:
g++ -I/usr/include/opencv hello.c -lcxcore -lhighgui -lm

0

使用以下命令,它对我有效:

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


0

我仍然在使用kubuntu 10.10,所以我不太熟悉11.10的工作方式,但是解决找不到库的最常见方法是使用sudoldconfig命令。它会刷新库数据库。如果这样做没有帮助,请查看/usr/lib/usr/lib64/usr/lib32,因为这是apt-get默认放置库文件的位置。当您找到库文件后,请更改LD_LIBRARY_PATH,使其包含该目录。我不认为/home/opencv/lib是它们所在的地方,但我不知道您的环境。


我在/usr/lib找到了所有的libcv.so库文件。然后我尝试更改路径为export LD_LIBRARY_PATH=/usr/lib,但我仍然遇到同样的错误。 - Marco L.
我不是一个链接器专家,但您是否尝试过在不干扰PKG_CONFIG和LD_LIBRARY_PATH的情况下编译它?我相信除非您从源代码编译了一些库,否则默认设置是可以的。另一件事是,我看到您使用g ++编译c程序。这可能是问题所在。您也可以尝试一下C++ API是否可行,以确保问题出现在链接器-库搜索方面而不是库本身。 - morynicz

0

我刚刚在我的笔记本电脑上升级到了11.04,遇到了类似的问题。我建议尝试构建最新版本的OpenCV(2.3.1),看看是否可以解决问题,这对我来说似乎解决了不少问题。


我之前尝试了2.3.1版本,但是遇到了很多问题,不得不降级到2.1版本。所以对我来说,升级到2.3.1版本不是一个选择。 - Marco L.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接