gpt4 book ai didi

gcc - 如果在可执行文件中使用,使用 gcc -fPIcflags编译对象(如果有的话)有什么含义?

转载 作者:行者123 更新时间:2023-12-04 01:06:38 24 4
gpt4 key购买 nike

我正在为我正在处理的项目整理一个 makefile。我在项目中有一个可执行文件和一个共享库。两者都使用一些相同的源文件,这些源文件被单独编译成目标文件。为了能够在共享库中使用这些对象,我需要在 gcc 中使用 -fPIC(位置无关代码)标志。使用 -fPIC 编译在可执行文件中使用的对象是否有任何含义?

最佳答案

在不需要时编译位置无关的代码在某些平台上会拖累性能(最明显的是寄存器匮乏的 x86 架构,因为 PIC 带走了一个可以在非 PIC 时更自由地使用的寄存器),但应该没有不利影响否则影响。

更进一步,甚至可以创建仅由与位置无关的代码构建的与位置无关的可执行文件 (-fPIE)。

话虽如此,libtool可以为您编译的每个源文件自动生成 PIC 和非 PIC 对象,即使在没有 libtool 集成的构建系统中,也应该很容易做到这一点。

关于gcc - 如果在可执行文件中使用,使用 gcc -fPIcflags编译对象(如果有的话)有什么含义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1165593/

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