【问题标题】:OpenCV on ubuntu 11.10ubuntu 11.10 上的 OpenCV
【发布时间】:2011-12-08 12:57:28
【问题描述】:

我刚刚将我的系统从 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

谁能帮帮我?

【问题讨论】:

    标签: c++ c opencv ubuntu


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      您为什么不使用 pkg-config 对您有利?

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

      【讨论】:

      • 您应该始终将库放在行尾:gcc test.c pkg-config --cflags opencv -o test pkg-config opencv --libs。在我将 Ubuntu 升级到 11.10 之后,不知何故这变得很重要。
      • 伙计们,这个建议,让图书馆走到尽头......哦,上帝,你让我免于另一次挫折!
      • 是的!!!!!!!!! @DimitarSlavchev 你刚刚解决了近两周的心痛、头痛和疼痛!谢谢你!
      【解决方案3】:

      我认为是因为从 gcc 4.5 到 gcc 4.6 的一些变化

      试试这个命令(即,将库移动到末尾,而不是在命令行的开头)——它对我有用:

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

      【讨论】:

        【解决方案4】:

        我刚刚在笔记本电脑上升级到 11.04 并且遇到了类似问题。我会尝试构建最新版本的 OpenCV (2.3.1),看看这是否能解决任何问题,这似乎为我解决了很多问题。

        【讨论】:

        • 我之前尝试过 2.3.1,但遇到了很多问题,迫使我降级到 2.1 版本。所以不幸的是,升级到 2.3.1 对我来说不是一种选择
        【解决方案5】:

        我仍在使用 kubuntu 10.10,所以我不太熟悉 11.10 是如何工作的,但是对于找不到库的问题,最常见的答案是使用 ldconfigsudo。它将刷新库数据库。如果这没有帮助,请查看 /usr/lib/usr/lib64/usr/lib32,因为它是默认位置apt-get 将库放入其中。找到库后,更改 LD_LIBRARY_PATH 使其包含目录。我不认为 /home/opencv/lib 是他们所在的地方,但我不知道你的环境

        【讨论】:

        • 我在/usr/lib 中找到了所有的libcv.so 库。然后我提供更改路径export LD_LIBRARY_PATH=/usr/lib 但我继续得到同样的错误
        • 这里不是链接器专家,但您是否尝试在不干预 PKG_CONFIG 和 LD_LIBRARY_PATH 的情况下编译它?我相信除非你从源代码编译了一些库,否则默认值是好的。另一件事是,正如我所见,您使用 g++ 编译 c 程序。这个问题的可能性很小。如果 c++ api 有效,您也可以尝试。只是为了确保问题出在链接器库搜索方面,而不是库本身。
        猜你喜欢
        • 2011-12-15
        • 1970-01-01
        • 2013-05-12
        • 1970-01-01
        • 1970-01-01
        • 2012-01-30
        • 2012-04-19
        • 1970-01-01
        • 2022-01-25
        相关资源
        最近更新 更多