c – 如何使用-fPIC重新编译

我试图在我的ARM Ubuntu机器上重新安装我的ffmpeg,遵循这个guide.不幸的是,当我编译一个使用这个lib的程序时,我得到以下失败:

/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

现在我想用编译器建议的-fPIC重新编译它,但我不知道如何.任何帮助表示赞赏.

解决方法:

简而言之,错误意味着您无法使用静态库与动态库进行链接.
正确的方法是将libavcodec编译成.so而不是.a,因此您尝试构建的另一个.so库将很好地链接.

最简单的方法是在./configure选项中添加–enable-shared.
甚至你可能会尝试禁用共享(或静态)库…你选择适合你的库!

上一篇:如何知道用于在C中构建共享库的优化选项


下一篇:c – 链接.lib文件时出现VC12命令行错误