繁体   English   中英

-fPIC暗示在现代平台上

[英]Is -fPIC implied on modern platforms

我想检查共享库是否已使用-fPIC标志进行编译。 有什么可能的方法(在Linux上, x86_64 )来检查?

是否暗含-fPIC (因此使检查变得多余?)

是的,在没有-fPIC情况下,GCC不允许您链接共享库,因此您无需检查任何内容:

$ gcc tmp.c -shared
/usr/bin/ld: /tmp/ccqQVR9Y.o: relocation R_X86_64_32 against `compare' can not be used when making a shared object; recompile with -fPIC
/tmp/ccqQVR9Y.o: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
$ gcc tmp.c -shared -fPIC

编辑

从技术上讲,如果没有-fPIC共享库中的任何一个函数都不调用其他函数或访问全局变量,则可以编译该共享库。 但是在那种情况下,生成的代码将与-fPIC相同。

某些架构(不一定是“现代”架构)只是没有绝对寻址模式,所有代码在那里都与位置无关。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM