FFmpeg不使用共享库进行编译

时间:2015-09-25 15:09:52

标签: ffmpeg

我按照以下方式运行FFmpeg的./configure脚本:

PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --pkg-config-flags="--static" --extra-cflags="-fPIC -m64 -I$HOME/ffmpeg_build/include" --extra-ldflags="-L$HOME/ffmpeg_build/lib" --bindir="$HOME/bin" --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree --enable-pic --extra-ldexeflags=-pie --enable-shared

当我尝试使用--enable-shared选项编译FFmpeg时,我收到此错误:

/usr/bin/ld: /home/guel/ffmpeg_build/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 /home/guel/ffmpeg_build/lib/libx264.a: error adding symbols: Bad value collect2: error: ld returned 1 exit status

我已将--enable-pic--extra-ldexeflags=-pie以及-fPIC -m64添加到--extra-cflags,以便摆脱此处建议的重定位错误:https://www.ffmpeg.org/platform.html < / p>

但我仍然遇到同样的错误。我需要使用--enable-shared选项编译ffmpeg以将其与OpenCV连接,所以我必须在这里找到一个解决方法。

1 个答案:

答案 0 :(得分:13)

我设法解决了这个问题。实际上,添加-fPIC--enable-pic应该已经完成​​了这个技巧,但我之前愚蠢地使用--disable-shared选项编译了依赖库(libx264和许多其他),因为我没有在我第一次编译FFmpeg并且只是盲目地遵循编译指南时关心它:https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu

在使用--enable-shared选项重新编译所有库之后,FFmpeg也成功编译了该选项。