如何动态加载可重定位的ELF可执行文件?

时间:2010-02-24 10:26:17

标签: elf

我试图为ARM平台编写elf可执行加载程序。我在这里有一些查询

1)如何生成可重定位或位置无关的ELF可执行文件(编译器和链接器选项是什么)2)如何加载上面生成的ELF可执行文件。

as astart,我做了一些工作并且工作正常。我正在使用RO_Base的固定地址,而不是在构建时拆分段(不使用任何--split选项),这样我就可以获得连续的代码,数据和bss部分。在此之后,我将elf加载到与RO_Base相同的地址,并将代码作为新线程执行。这工作正常。我没有做任何重新安置等......

现在我想通过生成可重定位的ELF并将Loader修改为适当的更改来使其动态化并能够加载到任何地址。 请帮助我使它工作。

谢谢,

2 个答案:

答案 0 :(得分:0)

只需对链接器使用-r标志即可重定位文件。

使用类似this的内容将文件重新定位到内存中。

答案 1 :(得分:0)

这是一个很大的话题。我将参考"连接器和装载机"作者:John R. Levine。以下是本书的手稿Chapter 7 Relocation,我希望它有用