Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenCV make失败-“;使用-fPIC“重新编译”;_Opencv_Ubuntu - Fatal编程技术网

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

OpenCV make失败-“;使用-fPIC“重新编译”;,opencv,ubuntu,Opencv,Ubuntu,我在Ubuntu13.10上安装了一个小OpenCV,看起来有些不高兴。我已经通过了一些版本和安装方法,当我去“make”或“make-j4”的时候,make卡车一直到 /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 -fP

我在Ubuntu13.10上安装了一个小OpenCV,看起来有些不高兴。我已经通过了一些版本和安装方法,当我去“make”或“make-j4”的时候,make卡车一直到

/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
感谢您的帮助。
再次感谢你,罗伯特。

在启用FFMPEG的Ubuntu 14.04上编译opencv3 alpha时,我遇到了同样的问题。 我的FFMPEG是用

/配置
制作
安装

我不得不重新编译FFMPEG

./configure--启用非自由--启用pic--启用共享


这对我来说很有用,在那之后opencv3编译得很好。

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

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


谢谢你的帖子

OpenCV在将
/usr/local/lib/libavcodec.a
链接到
lib/libopencv\u videoio.so.3.0
时未找到正确的ffmpeg库

因此应该提供
libavcodec.A
,但opencv只能找到
libavcodec.A
。 为什么?有一些可能性:

1) 旧/新ffmpeg

只有静态库的旧ffmpeg安装在
/usr/local/lib
/usr/local/bin
中。 安装了具有共享库和自定义安装路径的新ffmpeg,但系统不知道这一点。 你必须跟着

2) 没有共享的ffmpeg

正如其他人所说,您应该使用共享库安装ffmpeg

3) 新ffmpeg未“正确”安装

如果新的ffmpeg是由源代码构建的,并且位于自定义路径中,则该路径应为绝对路径。 例如:

/configure --prefix="$HOME/lib/ffmpeg_build"
如果设置了相对路径,相对路径将安装到ffmpeg设置文件中,opencv将无法根据该文件找到正确的LIB。
您可能想查看opencv源代码目录中的
cmakcache
文件,它记录构建中需要的libs路径。

也有同样的问题。我删除了ffmpeg(它删除了libavcodec.a),然后又重新编译和安装了它……但在最近的活动之后,我遇到了同样的问题。我检查了一下,发现你可以帮我一个忙,接受我的答案:)即使是几年前……啊,谢谢你打电话给我。你需要为你用eg x264编译FFmpeg的所有内容添加--enable_shared。@Robert Talamantez为什么你还没有将这个答案标记为正确?它对我起了作用。
--enable pic
也必须设置为
--enable shared
,否则它无法编译。我没有FFmpeg,但我从源代码构建了
libav
,但没有
--enable pic
选项,在制作opencv时出现了相同的错误。我需要在
libav
包中
make clean
,然后
/configure--enable nonfree--enable pic--enable shared
来创建
/usr/local/lib/libav*.so
链接文件。