c++ - 在 Debian 上编译 OpenCV (C++) 时出错
问题描述
[ 9%] Built target libwebp
[ 15%] Built target IlmImf
[ 17%] Built target ippiw
[ 23%] Built target libprotobuf
[ 24%] Built target quirc
[ 24%] Built target ittnotify
[ 24%] Built target opencv_test_core_pch_dephelp
[ 24%] Built target opencv_core_pch_dephelp
[ 24%] Built target opencv_ts_pch_dephelp
[ 24%] Built target pch_Generate_opencv_ts
[ 24%] Built target pch_Generate_opencv_core
make[2]: Warning: File '/usr/lib/x86_64-linux-gnu/libz.so' has modification time 2220 s in the future
[ 24%] Linking CXX shared library ../../lib/libopencv_core.so
make[2]: warning: Clock skew detected. Your build may be incomplete.
[ 31%] Built target opencv_core
[ 31%] Built target opencv_imgproc_pch_dephelp
[ 31%] Built target pch_Generate_opencv_imgproc
[ 31%] Linking CXX shared library ../../lib/libopencv_imgproc.so
[ 37%] Built target opencv_imgproc
[ 37%] Built target opencv_imgcodecs_pch_dephelp
[ 37%] Built target pch_Generate_opencv_imgcodecs
make[2]: Warning: File '/usr/lib/x86_64-linux-gnu/libz.so' has modification time 2217 s in the future
[ 37%] Linking CXX shared library ../../lib/libopencv_imgcodecs.so
make[2]: warning: Clock skew detected. Your build may be incomplete.
[ 39%] Built target opencv_imgcodecs
[ 39%] Built target opencv_videoio_pch_dephelp
[ 39%] Built target pch_Generate_opencv_videoio
[ 39%] Linking CXX shared library ../../lib/libopencv_videoio.so
/usr/bin/ld: /usr/local/lib/libavcodec.a(vc1dsp_mmx.o): relocation R_X86_64_PC32 against symbol `ff_pw_9' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status
make[2]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/build.make:231: lib/libopencv_videoio.so.4.0.1] Error 1
make[1]: *** [CMakeFiles/Makefile2:3712: modules/videoio/CMakeFiles/opencv_videoio.dir/all] Error 2
make: *** [Makefile:163: all] Error 2
当我尝试使用命令“make”编译 OpenCV 时,总是出现这些错误。我尝试过 OpenCV 3.4.5 4.0.1。并且我已经安装了 OpenCV 需要的所有库。
解决方案
您当前的日期和时间有问题
Warning: File '/usr/lib/x86_64-linux-gnu/libz.so' has modification time 2220 s in the future
出现有关标准库之类的消息是不正常的正如您通过消息“警告:检测到时钟偏差。您的构建可能不完整”所看到的那样。你打扰了 make,那个人使用日期和时间重新编译或不重新编译(即使在你的情况下也可能全部编译,因为没有对象/库已经完成)
因此,您确实需要更新操作系统上的日期和时间,激活ntp。
/usr/bin/ld: /usr/local/lib/libavcodec.a(vc1dsp_mmx.o): 重定位 R_X86_64_PC32 对符号 `ff_pw_9' 制作共享对象时不能使用;用 -fPIC 重新编译”
Makefiles 是通过configure生成的,以具有正确的编译器选项,它认为您需要修改configure.in以添加-fPIC
很难说更多,因为您甚至没有指明您的 linux/其他操作系统发行版...
推荐阅读
- python - 计算略有不同的矩阵乘法
- outlook - 自定义 UI 中的 Outlook Exchange 集成
- typescript - 在线程中调用 WebAPI 方法
- python - 从 Python 以 .cpp 格式保存 LGBM 模型
- javascript - 为什么 parseInt(x,0) 与 parseInt(x, 10) 相同?
- django - 在 django allauth 中解决错误未授权/rest-auth/registration/
- create-react-app - 在构建时运行 Netlify 变量 api 密钥,从 github 存储库中隐藏密钥
- sql - 我如何询问/组合 2 个 SQL SELECTS 并将结果放入 php 变量中?[关闭]
- python - 裁剪后如何检测和对齐倾斜的图像
- mongodb - mongodb查询慢,怎么会这样?