我刚刚将我的系统从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
任何人都可以帮助我?
答案 0 :(得分:6)
为什么不使用 pkg-config 对你有利?
g++ hello.c -o hello `pkg-config --cflags --libs opencv`
答案 1 :(得分:2)
我认为这是因为从gcc 4.5到gcc 4.6的一些变化
尝试使用此命令(即,将库移动到最后,而不是在命令行的开头) - 它适用于我:
g ++ -I / usr / include / opencv hello.c -lcxcore -lhighgui -lm
答案 2 :(得分:0)
我还在使用kubuntu 10.10所以我不太熟悉11.10是如何工作的,但是找不到库的问题最常见的答案是使用 ldconfig 和 sudo < / strong>即可。它将刷新库数据库。如果这没有帮助,请查看 / usr / lib , / usr / lib64 和 / usr / lib32 ,因为它是默认位置其中apt-get抛出库。当您找到库时,请更改 LD_LIBRARY_PATH ,使其包含该目录。我不认为/ home / opencv / lib是它们的位置,但我不知道你的环境
答案 3 :(得分:0)
我刚刚在笔记本电脑上升级到11.04并遇到类似问题。我会尝试构建最新版本的OpenCV(2.3.1)并查看是否有任何修复,这似乎为我解决了一些问题。
答案 4 :(得分:0)
使用以下命令,它对我有用:
gcc
pkg-config --cflags opencv
opencv.c -o open_cvpkg-config --libs opencv