OpenCV 依赖于不存在的符号链接
/usr/lib/libz.so
我无法在安装了 Cuda 的工作电脑上安装 OpenCV 3.0.0 3.1.0 或 3.2.0。在全新安装的 Ubuntu 16.04 上,按照这链接 OpenCV 无需 Cuda 即可完美安装(并将下载的版本更改为 3.0.0)。
现在在我的工作电脑上安装,在制作 makefile (cmake) 后运行 make 时,我不断收到此错误。cmake 命令可以正常工作,之后的 make 命令是核心问题。
cmake -D CMAKE_BUILD_TYPE=RELEASE -D INSTALL_C_EXAMPLES=OFF \
-D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON \
-D WITH_QT=OFF -D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_OPENGL=OFF -D WITH_V4L=ON -D WITH_CUDA=ON \
-D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_TBB=ON ..
make
错误:
make[2]: *** No rule to make target '/usr/lib/libz.so', needed by 'lib/libopencv_core.so.3.2.0'. Stop.
CMakeFiles/Makefile2:1283: recipe for target 'modules/core/CMakeFiles/opencv_core.dir/all' failed
make[1]: *** [modules/core/CMakeFiles/opencv_core.dir/all] Error 2
Makefile:160: recipe for target 'all' failed
make: *** [all] Error 2
检查 /usr/lib/libz.so 时发现它是一个悬空的符号链接,同时查看它应该链接到哪里。
ls /usr/lib/libz.so -lhA
lrwxrwxrwx 1 root root 31 May 9 09:29 /usr/lib/libz.so -> /usr/lib/i386-linux-gnu/libz.so
cd /usr/lib/i386-linux-gnu/
julian@ThinkPad-W540:/usr/lib/i386-linux-gnu$ ls
audit libformw.so.5.9 libpanelw.so.5.9
gconv libgpm.so.2 libpcreposix.so.3
libcuda.so libmenuw.so.5 libpcreposix.so.3.13.2
libcuda.so.1 libmenuw.so.5.9 libtic.so.5
libcuda.so.375.66 libnvidia-opencl.so.1 libtic.so.5.9
libdb-5.3.so libnvidia-opencl.so.375.66
libformw.so.5 libpanelw.so.5
我尝试重新安装软件包 libz 位于
sudo apt-get install zlib1g-dev --reinstall
仍然没有运气,同样的错误
*** No rule to make target '/usr/lib/libz.so', needed by 'lib/libopencv_core.so.3.2.0'. Stop.
所以我处于彻底陷入困境的阶段,我尝试将 /usr/lib/libz.so 链接到 /usr/lib/i386-linux-gnu 中的 cuda 文件,因为所需的 /usr/lib/i386-linux-gnu/libz.so 不存在,并且在重新安装 zlib 后也不存在。
任何帮助,将不胜感激。
答案1
我有同样的问题。
看起来 /usr/lib 中的 libz.so 符号链接已断。
我删除了该符号链接并创建了指向我的 libz.so 所在目录的新链接并make
再次运行,一切都按预期工作。