当前位置: 技术问答>linux和unix
elf加载器问题,寻求高手帮助
来源: 互联网 发布时间:2016-09-05
本文导语: 最近想实现一个elf加载器,也就是能让elf文件运行起来的东东。但遇到一个问题,不知道如何支持C++的一些特性:如何调用全局对象和静态对象的构造函数和析构函数,请各位高手不吝赐教。 | ...
最近想实现一个elf加载器,也就是能让elf文件运行起来的东东。但遇到一个问题,不知道如何支持C++的一些特性:如何调用全局对象和静态对象的构造函数和析构函数,请各位高手不吝赐教。
|
如何调用全局对象和静态对象的构造函数和析构函数?
ELF中有两个特别的段init和finit,需要将构造函数和析构函数的代码分别放到这两个段里,再深入的说,我就开始忽悠啦,算啦。
推荐书籍:程序员的自我修炼
书中错误不少,但是作为链接,加载入门可以看看。
ELF中有两个特别的段init和finit,需要将构造函数和析构函数的代码分别放到这两个段里,再深入的说,我就开始忽悠啦,算啦。
推荐书籍:程序员的自我修炼
书中错误不少,但是作为链接,加载入门可以看看。
|
这个难度有点大唉。完全没想法
|
对于加载器来说,并不会区分你二进制文件是c还是c++的。
加载器的作用是分析elf的程序头,并且将文件中相应的加载段(数据段,代码段)印映到内存中,并跳转到elf程序头中所指的程序开始的指令处。
至于C++的一些特性是c++编绎器需要支持的东西。
加载器的作用是分析elf的程序头,并且将文件中相应的加载段(数据段,代码段)印映到内存中,并跳转到elf程序头中所指的程序开始的指令处。
至于C++的一些特性是c++编绎器需要支持的东西。
|
ELF文件是不区分语言的吧,我记得以前的内核中有个load_elf_binary函数,可以参考一下。