2010-09-30 85 views
2

我正在创建一个ELF可执行文件,我需要知道操作系统需要哪些部分才能加载和执行它。可用的ELF可执行文件需要哪些部分?

详情:

 
OS:    Ubuntu 10.04 (64-bit) 
Kernel version: 2.6.32-24 
Architecture:  i386 

我认识到,下面很可能是必要的:

  • 的.text
  • 的.symtab
  • .rel.text

有其他吗?

回答

4

"A Whirlwind Tutorial on Creating Really Teensy ELF Executables for Linux "有关于如何(ab)使用各种ELF部分使可执行文件尽可能小的信息。如果您需要更多信息,它还包含指向ELF规范的链接。 (这也是一个相当有趣的阅读。)也许它会告诉你你需要知道什么?

+0

是啊。它非常有帮助!谢谢! – 2010-09-30 20:18:58

+3

严格地说,你不需要**任何**部分。动态加载程序使用程序头来加载文件,而不是节头。这篇文章确实提到了这一点,但我只是想明确提及它。如果您需要导入符号,可以通过添加PT_DYNAMIC段来完成。 – 2010-10-01 12:22:51

2

我决定尝试系统地从GCC生成的ELF文件中剥离部分。

我能够除去许多部分,但这些不能被删除,具有可执行仍执行不分段错误:

 
.dynsym 
.dynstr 
.gnu.version_r 
.rel.plt 
.init 
.plt 
.text 
.fini 
.ctors 
.dtors 
.dynamic 
.got.plt 
.data 
.strtab