使用 ffmpeg 编译时出错:“在制作共享对象时,不能使用针对‘本地符号’的重定位 R_ARM_MOVW_ABS_NC;使用 -fPIC 重新编译”
尝试在 ARM Ubuntu 系统上重新安装 ffmpeg 时,在使用利用 ffmpeg 库的程序时遇到编译错误。错误消息指出:
/usr/bin/ld: /usr/local/lib/libavcodec.a(amrnbdec.o): relocation R_ARM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared object; recompile with -fPIC /usr/local/lib/libavcodec.a: could not read symbols: Bad value collect2: ld returned 1 exit status
此错误是由于尝试将静态库 (.a) 与动态库 (.so) 链接而引起的。要解决此问题,需要使用 -fPIC 标志重新编译 ffmpeg。
使用 -fPIC 重新编译
在 ./ 期间添加 --enable-shared 标志configure 将指示 ffmpeg 构建为动态库。或者,如果愿意,您可以选择完全禁用静态库。
使用 -fPIC 重新编译 ffmpeg 库后,编译应该会成功进行,不会出现上述错误。
以上是为什么我在编译 ffmpeg 时出现'在制作共享对象时无法使用针对'本地符号'的重定位 R_ARM_MOVW_ABS_NC”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!