我正在创建一个ELF可执行文件,我需要知道操作系统需要哪些部分才能加载和执行它。可用的ELF可执行文件需要哪些部分?
详情:
OS: Ubuntu 10.04 (64-bit) Kernel version: 2.6.32-24 Architecture: i386
我认识到,下面很可能是必要的:
- 的.text
- 的.symtab
- .rel.text
有其他吗?
我正在创建一个ELF可执行文件,我需要知道操作系统需要哪些部分才能加载和执行它。可用的ELF可执行文件需要哪些部分?
详情:
OS: Ubuntu 10.04 (64-bit) Kernel version: 2.6.32-24 Architecture: i386
我认识到,下面很可能是必要的:
有其他吗?
"A Whirlwind Tutorial on Creating Really Teensy ELF Executables for Linux "有关于如何(ab)使用各种ELF部分使可执行文件尽可能小的信息。如果您需要更多信息,它还包含指向ELF规范的链接。 (这也是一个相当有趣的阅读。)也许它会告诉你你需要知道什么?
我决定尝试系统地从GCC生成的ELF文件中剥离部分。
我能够除去许多部分,但这些不能被删除,具有可执行仍执行不分段错误:
.dynsym .dynstr .gnu.version_r .rel.plt .init .plt .text .fini .ctors .dtors .dynamic .got.plt .data .strtab
是啊。它非常有帮助!谢谢! – 2010-09-30 20:18:58
严格地说,你不需要**任何**部分。动态加载程序使用程序头来加载文件,而不是节头。这篇文章确实提到了这一点,但我只是想明确提及它。如果您需要导入符号,可以通过添加PT_DYNAMIC段来完成。 – 2010-10-01 12:22:51