首先,我不是 C/C++ 开发人员,所以解决方案要具体,并尽量理解。其次,有一个类似的问题在这里这并不能解决问题。这是我从 ffmpeg repo 克隆后的配置行:
./configure --disable-debug --disable-doc \
--disable-avdevice --disable-programs \
--disable-decoders --disable-encoders \
--disable-filters --disable-muxers \
--disable-demuxers --disable-indevs \
--disable-outdevs --disable-swscale-alpha \
--disable-symver --disable-protocols \
--disable-bsfs --disable-parsers \
--disable-symver --disable-iconv \
--disable-shared --enable-static \
--enable-swresample --enable-swscale \
--enable-pthreads --enable-pic \
--enable-runtime-cpudetect --enable-asm \
--enable-yasm --enable-decoder=aac \
--enable-decoder=h264 --enable-decoder=libspeex \
--enable-parser=h264,aac --prefix="$(pwd)/linux" \
--extra-cflags="-fPIC -mcmodel=large" \
--extra-cxxflags="-fPIC -mcmodel=large" \
--pkg-config-flags="--static"
完成后我运行以下命令:
make clean
make
make install
然后,我将 *.a 文件从 linux 目录 (我的输出目录,每个前缀) 复制到项目的 lib 文件夹中。然后,我运行构建,并在进入链接步骤时出现此错误:
/usr/bin/ld: lib/libavcodec.a(hevc_cabac.o): relocation R_X86_64_PC32 against symbol `ff_h264_cabac_tables' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status
我在 Ubuntu 16.04 上运行,不能使用 GPL 或非免费代码。