使用OpenCV编译代码时出现问题 - /usr/bin/ld: 找不到-lippicv。

9

当我使用opencv编译一些代码时,我遇到了这个错误

# g++ txtbin-03.1.cpp -o txtbin `pkg-config opencv --cflags --libs`
/usr/bin/ld: cannot find -lippicv
collect2: error: ld returned 1 exit status

安装 OpenCV

# apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
# apt-get install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
# cd /var/bin && git clone https://github.com/Itseez/opencv.git && cd opencv
# cmake . && make -j2 && make install

你有检查过这个问题和答案吗?https://dev59.com/J-o6XIcBkEYKwwoYIAof - akhisp
5个回答

15

在我的情况下,只需要将OpenCV SDK中的libippicv.a文件复制到/usr/local/lib目录中:

sudo cp 3rdparty/ippicv/unpack/ippicv_lnx/lib/intel64/libippicv.a /usr/local/lib/

这应该是最好的修复。 - user8038009

5
重新编译整个库并不必要,尤其是如果您不需要这个库的话。我在这里找到了一个非常好的、立即可用的解决方案(这里)。如果链接失效或中断,解决方案很简单:只需从opencv pkg-config配置文件中删除-lippicv。因此,您需要找到opencv.pc文件,该文件默认位于/usr/local/lib/pkgconfig/目录中。然后在Libs:节中删除上述库即可。

4
重新编译OpenCv时,请使用以下选项:
cmake -DWITH_IPP=ON . && make -j $(nproc) && make install

在哪里添加这行代码?我找不到TARGET_LINK_LIBRARIES(或其他相关代码。 - clarkk
你正在编译openCV吗? - Dipak D Desai
是的,在编译过程中需要使用lippicv库。 - Dipak D Desai
使用选项 WITH_IPP=ON 编译 OpenCV。 - Dipak D Desai
首先尝试使用选项“WITH_IPP=ON”编译OpvenCv,并检查是否出现错误? - Dipak D Desai
显示剩余3条评论

0

libippicv.a 是一个第三方库,因此您需要在编译期间显式提供它或将其作为执行环境的一部分。

它位于 ~/OpenCV/opencv-3.1.0/3rdparty/ippicv/unpack/ippicv_lnx/lib/intel64/。

同时,在生成 Makefile 时提供 cmake -DWITH_IPP=ON


0

我在尝试安装opencv_contrib存储库(opencv-3.1.0 / Ubuntu 16.04)时遇到了同样的问题,而且没有任何解决方案可行(我尝试使用标志WITH_IPP = ON制作OpenCV,但是某种方式OpenCV 3.1.0无法下载ippicv库(?),并且没有错误提示,所以当我尝试在终端中locate ippicv时才发现这一点)。

我的解决方案是下载另一个OpenCV版本(3.0.0适用于我),使用标志WITH_IPP = ON进行make + make install,然后将已下载的ippicv库(现在应该位于/usr/local/share/OpenCV/3rdparty/lib/libippicv.a)复制到/usr/local/lib/

我不知道这是否是OpenCV 3.1.0中已知的错误,但这个问题绝对值得关注。


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