首页 >后端开发 >C++ >为什么我在编译 ffmpeg 时出现'在制作共享对象时无法使用针对'本地符号'的重定位 R_ARM_MOVW_ABS_NC”错误?

为什么我在编译 ffmpeg 时出现'在制作共享对象时无法使用针对'本地符号'的重定位 R_ARM_MOVW_ABS_NC”错误?

Barbara Streisand
Barbara Streisand原创
2024-11-10 14:37:03446浏览

Why Am I Getting

使用 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn