我目前正在处理一些旧版程序包,并且看到一些Makefile使用-fPIC标志来编译最终的可执行文件。

我的理解是,这在创建共享库时使用,并且在创建可执行文件时使用它是没有意义的。

我想知道我是对的还是我错过了什么,因为当我在互联网上搜索时,我只会看到有关共享库而不是可执行文件的结果。

谢谢,

最佳答案

位置无关的代码在共享库上下文之外可能很有用。一种常见的情况是Address space layout randomization,它使最终的可执行文件更安全,免受代码注入(inject)攻击。

Fedora等几种发行版中,大多数软件包都以PIE构建。

关于linux - 使用 “-fPIC”标志编译可执行文件(无共享库),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36545222/

10-13 06:41