我键入
如果我将-nopie传递给gcc,那么我将得到正确的答案:
在gcc的手册页中,简要描述了如下:
file /bin/ls
,并得到以下输出:
我发现原因是我的gentoo正在使用-pie编译所有内容。/bin/ls:ELF 64位LSB共享对象,x86-64,版本1(SYSV),动态链接,解释器/lib64/ld-linux-x86-64.so.2,用于GNU / Linux 2.6.32,被剥离
如果我将-nopie传递给gcc,那么我将得到正确的答案:
同时,在构建. so也是可执行文件中,我发现了一些信息。它使用-pie使DSO可执行。a.out:ELF 64位LSB可执行文件,x86-64,版本1(SYSV),动态链接,解释器/lib64/ld-linux-x86-64.so.2,用于GNU / Linux 2.6.32,未剥离
在gcc的手册页中,简要描述了如下:
所以我想知道-pie具体做什么?它如何使我的可执行文件被识别为共享对象?-pie
在支持它的目标上生成位置无关的可执行文件。