我需要做一件非常不寻常的事情:手动执行一个 ELF 可执行文件。也就是将所有节加载到正确的位置,查询 main() 并调用它(然后进行清理)。可执行文件将被静态链接,因此不需要链接库。我还控制基地址,因此不必担心可能出现的冲突。
那么,有没有相关的库呢?
我找到了 OSKit 及其 liboskit_exec,但该项目似乎自 2002 年以来就已停止开发。
我可以接受使用代码段(当然要遵守许可证),并将它们修改成我所需的,但由于我对 Linux 的世界还很陌生,我甚至不知道在哪里可以找到这些代码! :)
PS. 我需要在 ARM 平台上使用。
更新 好像加载 elfs 的问题需要一些良好的知识(叹气),所以我要去阅读一些规范和手册。而且我想我会坚持使用 bionic/linker 和 libelfsh。谢谢大家!
总结结果:
- libelf: http://directory.fsf.org/project/libelf/
- elfsh 和 libelfsh(现在是 eresi 的一部分): http://www.eresi-project.org/
- elfio(另一个 ELF 库): http://sourceforge.net/projects/elfio/
- OSKit 和 liboskit_exec(已过时): http://www.cs.utah.edu/flux/oskit/
- bionic/linker: https://android.googlesource.com/platform/bionic