我理解g ++ -fPIC选项很好地解释了:GCC -fPIC option
我有很多源文件,通过makefile
进行构建。很难分离出作为可执行文件或共享库一部分的源文件。我是否可以将g ++的-fPIC选项用于编译的任何文件:
g++ -c -fPIC ....
以后,如果它是共享库,则链接-shared
,否则没有-shared
可执行文件。
答案 0 :(得分:1)
可以使用-fPIC
构建可执行文件,但这可能会导致性能损失,因为编译器会做出更保守的假设,例如关于内联(允许runtime symbol interposition)。要生成与位置无关的可执行文件,最好使用-fPIE
标记(现在默认情况下,大多数现代发行版,例如Ubuntu生成)。
在任何情况下,除非你真的不关心性能,否则你需要使用不同的标志编译你的文件两次。
答案 1 :(得分:-1)
我可以在编译中使用g ++的-fPIC选项吗?
是。如果给出诸如汇编文件之类的东西,它就没有效果。
[...]以后,如果是共享库,请链接-shared?
是。