OpenCv 3.1.0 - 编译失败
OpenCv 3.1.0 - compile fails
我正在尝试在 debian 8 上安装 OpenCv 3.1.0(它提供 python3 绑定)
按照官方网站上的标准程序http://docs.opencv.org/3.1.0/d7/d9f/tutorial_linux_install.html过程失败
[ 30%] Building CXX object modules/photo/CMakeFiles/opencv_photo.dir/opencl_kernels_photo.cpp.o
Linking CXX shared library ../../lib/libopencv_shape.so
[ 30%] Built target opencv_shape
Linking CXX shared library ../../lib/libopencv_photo.so
[ 30%] Built target opencv_photo
Makefile:147: recipe for target 'all' failed
make: *** [all] Error 2
[ 0%] Built target opencv_core_pch_dephelp
[ 0%] Built target pch_Generate_opencv_core
[ 4%] Built target opencv_core
[ 4%] Built target opencv_ts_pch_dephelp
[ 4%] Built target pch_Generate_opencv_ts
[ 4%] Built target opencv_imgproc_pch_dephelp
[ 4%] Built target pch_Generate_opencv_imgproc
[ 9%] Built target opencv_imgproc
[ 9%] Built target opencv_imgcodecs_pch_dephelp
[ 9%] Built target pch_Generate_opencv_imgcodecs
[ 11%] Built target opencv_imgcodecs
[ 11%] Built target opencv_videoio_pch_dephelp
[ 11%] Built target pch_Generate_opencv_videoio
Linking CXX shared library ../../lib/libopencv_videoio.so
/usr/bin/ld: /usr/local/lib/libavcodec.a(avpacket.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libavcodec.a: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
modules/videoio/CMakeFiles/opencv_videoio.dir/build.make:280: recipe for target 'lib/libopencv_videoio.so.3.1.0' failed
make[2]: *** [lib/libopencv_videoio.so.3.1.0] Error 1
CMakeFiles/Makefile2:4076: recipe for target 'modules/videoio/CMakeFiles/opencv_videoio.dir/all' failed
make[1]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/all] Error 2
Makefile:147: recipe for target 'all' failed
make: *** [all] Error 2
有关此问题的更多信息,请访问 http://wiki.open-si.org/trac-notes/ticket/10
此错误来自 ffpmeg 使用的某些库未使用 --enable-shared 编译最有可能是 libvpx,请在重置之前先使用 "make clean" ./configure with --enable-shared 和重新编译这些库。
make clean
./configure --enable-shared --disable-static
make
sudo make install
假设您不将 FFMPEG 与 OpenCV 一起使用的另一个选项:您可以禁止它被编译:
当你 运行 Cmake 即:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local \
-D PYTHON2_PACKAGES_PATH=~/.virtualenvs/cv/lib/python2.7/site-packages \
-D PYTHON2_LIBRARY=/usr/local/Cellar/python/2.7.10/Frameworks/Python.framework/Versions/2.7/bin \
-D PYTHON2_INCLUDE_DIR=/usr/local/Frameworks/Python.framework/Headers \
-D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON \
-D BUILD_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules ..
添加标志-DWITH_FFMPEG=0
不编译FFMPEG部分
我正在尝试在 debian 8 上安装 OpenCv 3.1.0(它提供 python3 绑定)
按照官方网站上的标准程序http://docs.opencv.org/3.1.0/d7/d9f/tutorial_linux_install.html过程失败
[ 30%] Building CXX object modules/photo/CMakeFiles/opencv_photo.dir/opencl_kernels_photo.cpp.o
Linking CXX shared library ../../lib/libopencv_shape.so
[ 30%] Built target opencv_shape
Linking CXX shared library ../../lib/libopencv_photo.so
[ 30%] Built target opencv_photo
Makefile:147: recipe for target 'all' failed
make: *** [all] Error 2
[ 0%] Built target opencv_core_pch_dephelp
[ 0%] Built target pch_Generate_opencv_core
[ 4%] Built target opencv_core
[ 4%] Built target opencv_ts_pch_dephelp
[ 4%] Built target pch_Generate_opencv_ts
[ 4%] Built target opencv_imgproc_pch_dephelp
[ 4%] Built target pch_Generate_opencv_imgproc
[ 9%] Built target opencv_imgproc
[ 9%] Built target opencv_imgcodecs_pch_dephelp
[ 9%] Built target pch_Generate_opencv_imgcodecs
[ 11%] Built target opencv_imgcodecs
[ 11%] Built target opencv_videoio_pch_dephelp
[ 11%] Built target pch_Generate_opencv_videoio
Linking CXX shared library ../../lib/libopencv_videoio.so
/usr/bin/ld: /usr/local/lib/libavcodec.a(avpacket.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libavcodec.a: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
modules/videoio/CMakeFiles/opencv_videoio.dir/build.make:280: recipe for target 'lib/libopencv_videoio.so.3.1.0' failed
make[2]: *** [lib/libopencv_videoio.so.3.1.0] Error 1
CMakeFiles/Makefile2:4076: recipe for target 'modules/videoio/CMakeFiles/opencv_videoio.dir/all' failed
make[1]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/all] Error 2
Makefile:147: recipe for target 'all' failed
make: *** [all] Error 2
有关此问题的更多信息,请访问 http://wiki.open-si.org/trac-notes/ticket/10
此错误来自 ffpmeg 使用的某些库未使用 --enable-shared 编译最有可能是 libvpx,请在重置之前先使用 "make clean" ./configure with --enable-shared 和重新编译这些库。
make clean
./configure --enable-shared --disable-static
make
sudo make install
假设您不将 FFMPEG 与 OpenCV 一起使用的另一个选项:您可以禁止它被编译:
当你 运行 Cmake 即:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local \
-D PYTHON2_PACKAGES_PATH=~/.virtualenvs/cv/lib/python2.7/site-packages \
-D PYTHON2_LIBRARY=/usr/local/Cellar/python/2.7.10/Frameworks/Python.framework/Versions/2.7/bin \
-D PYTHON2_INCLUDE_DIR=/usr/local/Frameworks/Python.framework/Headers \
-D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON \
-D BUILD_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules ..
添加标志-DWITH_FFMPEG=0
不编译FFMPEG部分