gpt4 book ai didi

c++ - 除了共享库之外,g++ -fPIC 是否也适用于可执行文件?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:43:59 25 4
gpt4 key购买 nike

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

g++ -c -fPIC ....

以后,如果是共享库,则链接-shared,否则不带-shared可执行。

最佳答案

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

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

关于c++ - 除了共享库之外,g++ -fPIC 是否也适用于可执行文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42998965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com