【发布时间】:2018-03-27 02:28:11
【问题描述】:
我知道-fPIC 是共享库所必需的,并且知道原因。
但是,我不清楚这个问题:
在构建可执行文件或静态库期间,是否应该永远不要使用 -fPIC?
【问题讨论】:
-
我的印象(受知识分子的反驳)是,如今的编译器无论如何都会生成 PIC。从理论上讲,PIC 比非 PIC 代码的效率要低一些,但是对于 ASLR(地址空间布局随机化)之类的东西,大部分时间都可能需要 PIC。我主要考虑 PC 桌面系统和更大的系统; “嵌入式”空间中的规则可能会有所不同。 (在 Mac 上,使用
-fPIC或-fpic编译或两者都不使用会给出与 GCC 7.3.0 相同大小的目标代码。但这不一定是 ELF;目标文件是“Mach-O 64 位对象 x86_64”。 )
标签: c++ c gcc compilation elf