【问题标题】:FFmpeg doesn't compile with shared librariesFFmpeg 不能与共享库一起编译
【发布时间】:2015-09-25 23:39:37
【问题描述】:

我运行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

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

【问题讨论】:

  • 我遇到了这个问题,只需从 Github 上提取最新版本即可为我解决。

标签: ffmpeg


【解决方案1】:

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

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

【讨论】:

  • 谢谢,这对我帮助很大。出于同样的原因,我遇到了同样的问题。
  • 注意 libaom 您需要在 cmake 配置中添加:"-DBUILD_SHARED_LIBS=1"
猜你喜欢
  • 2021-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多