5——Linux二进制分析——学习——关于elf文件类型/-no-pie选项

《4——Linux二进制分析——学习——ptrace调试器》的补充。关于编译test的问题。

我直接通过gcc test.c -o test编译,在执行的时候会报错./testshare is not an ELF executable. The type: 3.我用readelf -h test去查看头文件的时候发现test的文件格式是 DYN (Shared object file),而我想要的应该是 EXEC (Executable file)​​​​​​格式。百度后在一篇博客中发现了问题所在。是一个gcc叫做pie的功能导致,是为了系统安全。我们的交叉编译连自动关闭了pie,所以以前没有发现这种情况。使用gcc test.c -o test -no-pie编译即可

那篇博客是https://blog.csdn.net/cclethe/article/details/83387685,谢谢兄弟的指点。里面有详细的说明,受益良多。

你可能感兴趣的:(《Linux二进制分析》,linux,gcc)