其他分享
首页 > 其他分享> > c – 如何使用-fPIC重新编译

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