小编Xia*_*ami的帖子

-pie到底做什么?

file /bin/ls并得到输出:

/ bin / ls:ELF 64位LSB共享库,x86-64,版本1(SYSV),动态链接,解释器/lib64/ld-linux-x86-64.so.2,用于GNU / Linux 2.6.32,剥离

我发现原因是我的gentoo正在使用-pie编译所有内容。

如果我将-nopie传递给gcc,我将得到正确的答案:

a.out:ELF 64位LSB可执行文件,x86-64,版本1(SYSV),动态链接,解释器/lib64/ld-linux-x86-64.so.2,用于GNU / Linux 2.6.32,未剥离

另外,我在构建.so时也发现了一些东西,它也是可执行文件。它使用-pie使DSO可执行。

在gcc的手册页中,它简要描述了:

-pie
在支持它的目标上生成与位置无关的可执行文件。

所以我想知道-pie到底在做什么?它如何使我的可执行文件被识别为共享对象?

c linux linker gcc code-generation

5
推荐指数
1
解决办法
2219
查看次数

标签 统计

c ×1

code-generation ×1

gcc ×1

linker ×1

linux ×1