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

use*_*505 5 elf

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

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

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

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

谢谢,

ber*_*kus 0

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

使用类似的方法内存中重新定位文件。