ffmpeg安装在CentOS 64位'install with -fPIC'错误

时间:2012-02-29 20:23:55

标签: linux ffmpeg 64-bit

尝试在64位CentOS计算机上编译ffmpeg时出现此错误。

以下是我的./configure选项:

./configure --enable-shared --enable-gpl --enable-nonfree --enable-postproc --enable-swscale --enable-pthreads --enable-libx264 --enable-libxvid --enable-libvorbis --enable-libfaac --enable-libmp3lame --enable-libvpx

make

编译源代码时出现以下错误:

/usr/bin/ld: /usr/local/lib/libvpx.a(vpx_codec.c.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/libvpx.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make: *** [libavcodec/libavcodec.so.54] Error 1

如何解决此错误,并使用我的64位CentOS盒上的最新ffmpeg启动并运行libvpx?

6 个答案:

答案 0 :(得分:10)

由于您使用“--enable-shared”配置了FFMPEG,您还需要使用“--enable-shared”配置其中一些其他库,并且它们都必须使用相同的设置。

此错误消息基本上告诉您再次编译libvpx并在configure命令中添加“--enable-shared”,然后再次尝试编译FFMPEG(也配置为“--enable-shared”)。有可能你会得到相同的错误,但它会说“libx264”或“libmp3lame”而不是“libvpx”,所以你还需要在configure命令中用“--enable-shared”重新编译那些lib。 / p>

答案 1 :(得分:3)

在运行Oracle Linux 6.3的x86_64计算机上编译 ffmpeg 时出现类似错误。 Oracle Linux基于Red Hat,因此在原始问题中类似于CentOS。

配置:

./configure --enable-shared --enable-nonfree --enable-libmp3lame --enable-libfaac --enable-libx264 --enable-encoder=x264 --enable-gpl

请:

/usr/bin/ld: /usr/local/lib/libx264.a(common.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/libx264.a: could not read symbols: Bad value

在我的情况下,这个answer虽然部分是针对Ubuntu的,但却更多地阐明了x86_64系统的基本问题:

  

“我相信如果您在FFmpeg上启用共享,您必须执行相同操作   在x86_64系统上使用x264,否则你将拥有一个PIC共享FFmpeg和   非PIC静态x264。“

修复是为了确保我最初使用“--enable-static”标志编译的x264源代码 configure (生成“/usr/local/lib/libx264.a”)使用“--enable-shared”标志重新编译,该标志生成“/usr/local/lib/libx264.so”的正确目标:

1st Attempt:
    1. cd /tmp
    2. wget ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2
    3. tar xfv last_x264.tar.bz2; 
    4. cd x264-snapshot-xxxxxx
    5. ./configure --enable-static
    6. make && make install

2nd Attempt:
    1. cd /tmp/x264-snapshot-xxxxxx
    2. make distclean
    3. ./configure --enable-shared
    4. make && make install

答案 2 :(得分:2)

尝试

CFLAGS=-fPIC ./configure ...<your config options>...

添加错误提及的标记缺失。

答案 3 :(得分:0)

(问题是......?)

共享库必须由PIC目标代码组成,但ffmpeg无法这样做。

答案 4 :(得分:0)

您是否使用--shared-fPIC编译了libvpx,以便生成libvpx.so*

如果没有,您可以在this问题中尝试评论#6和#7。

答案 5 :(得分:0)

我在使用libx264.a

的MythTV构建中遇到了这个问题

我按照Saheed的建议下载并构建了。

唯一的一点就是当我执行“make install”时/usr/local/lib/libx264.a没有被更改。我不得不做“make install-lib-static”