OpenCV make失败 - “用-fPIC重新编译”

时间:2014-08-28 00:38:48

标签: opencv ubuntu

我在Ubuntu 13.10上安装了一些OpenCV安装,看起来有点不高兴。我已经完成了几个版本并安装了方法,当我去了#34; make"或" make -j4"制造卡车直到

/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
make[2]: *** [lib/libopencv_videoio.so.3.0.0] Error 1
make[1]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/all] Error 2
make: *** [all] Error 2

感谢任何帮助。 再次感谢罗伯特。

3 个答案:

答案 0 :(得分:19)

在启用了FFMPEG的Ubuntu 14.04上编译opencv3 alpha时遇到了同样的问题。 我的FFMPEG是编译的git版本 ./configure make make install

我不得不重新编译FFMPEG ./configure --enable-nonfree --enable-pic --enable-shared

这对我来说很有把戏,然后opencv3编译好了。

答案 1 :(得分:2)

/usr/local/lib/libavcodec.a链接到lib/libopencv_videoio.so.3.0.0时,OpenCV找不到合适的ffmpeg库。

应提供libavcodec.so,但opencv只能找到libavcodec.a。 为什么?有一些可能性:

1)旧/新ffmpeg

/usr/local/lib/usr/local/bin中安装了一个只有静态库的旧ffmpeg。 安装了具有共享库和自定义安装路径的新ffmpeg,但系统不知道这一点。 您必须关注http://code.opencv.org/issues/1077

2)没有共享的ffmpeg

你应该像其他人说的那样用共享库安装ffmpeg。

3)新的ffmpeg没有“正确”安装

如果新的ffmpeg是由源代码和自定义路径构建的,则路径应该是绝对路径。 例如:

/configure --prefix="$HOME/lib/ffmpeg_build"

如果设置了相对路径,则相对路径将安装到ffmpeg设置文件中,而opencv将根据该文件找不到正确的库。 您可能希望查看opencv源目录中的CMakeCache文件,它会记录构建时需要的库路径。

答案 2 :(得分:1)

我正在寻找一种正确构建OpenCV 2.4.11的方法,并且这样做了。但是,正确的共享参数是--enable-shared,因此命令行是

./ configure --enable-nonfree --enable-pic --enable-shared

感谢您的帖子!