2

我理解 g++ -fPIC 选项很好地解释了:GCC -fPIC 选项 我有许多源文件,这些源文件是通过makefile构建来管理的。很难分离作为可执行文件或共享库一部分的源文件。我可以将 g++ 的 -fPIC 选项用于任何正在编译的文件:

g++ -c -fPIC ....

稍后,如果它是共享库,则使用 链接-shared,否则不-shared使用可执行文件。

4

2 回答 2

2

可以构建可执行文件,-fPIC但这可能会导致性能损失,因为编译器会做出更保守的假设,例如关于内联(允许运行时符号插入)。要生成与位置无关的可执行文件,最好不要使用-fPIE标志(大多数现代发行版,例如Ubuntu现在默认使用它构建)。

无论如何,除非您真的不关心性能,否则您需要使用不同的标志编译文件两次。

于 2017-03-24T12:10:58.260 回答
-1

我可以对正在编译的任何文件使用 g++ 的 -fPIC 选项吗?

是的。如果给出了诸如汇编文件之类的东西,它将没有任何效果。

[ ... ] 及以后,如果它是共享库,请使用 -shared?

是的。

于 2017-03-24T14:30:12.197 回答