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,compilation,gcc,ffmpeg,fpic 来源: https://codeday.me/bug/20190917/1809868.html