如何用-fPIC重新编译

我试图在我的ARM Ubuntu机器上按照本指南重新安装我的ffmpeg。 不幸的是,当我编译使用这个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重新编译它,但我不知道如何。 任何帮助表示赞赏。

简而言之,这个错误意味着你不能使用一个静态库来链接一个dynamic链接库 。 正确的方法是将libavcodec编译为.so而不是.a,所以您正在尝试构build的其他.so库将链接良好。

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

看看这个页面。

您可以使用以下命令全局添加标志: export CXXFLAGS="$CXXFLAGS -fPIC"

configuration步骤后,你可能有一个makefile。 在这个makefile中寻找CFLAGS(或类似的)。 puf -fPIC结束后再运行make。 换句话说,-fPIC是一个必须传递给编译器的编译器选项。

在编译之前,请确保“rules.mk”文件已正确包含在Makefile中或通过以下方式明确包含它:

“source rules.mk”