我试图在我的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重新编译它,但我不知道如何。 任何帮助表示赞赏。
我怎么能告诉,像objdump ,如果一个对象文件已经build立了-fPIC ?
我已经阅读了-fpic页,但我仍然不明白-fpic和-fPIC之间的区别。 有人可以用简单明了的方式来解释吗? 相关问题: 构build共享库时,-fPIC意味着什么? 如果在可执行文件中使用gcc -fPIC标志来编译对象,会产生什么影响?
我知道“ -fPIC ”选项与解决个别模块之间的地址和独立性有关,但我不确定它的真正含义。 你可以解释吗?
我已阅读GCC的代码生成约定的选项 ,但不明白什么“生成位置无关的代码(PIC)”。 请举个例子来解释我是什么意思。