使用LD将原始数据/资源链接到可执行文件

时间:2010-12-11 21:33:54

标签: linux operating-system ld

到目前为止,我总是使用MSVC ++下的资源来从我的程序内部访问原始数据,而且我从未直接使用过链接器,但是现在我在Linux下,我正在使用交叉编译器生成elf文件。我和朋友正在玩玩具操作系统。

我们需要在某些时候完成的一件事是将相当大的任意原始数据链接到可执行文件中。我们希望数据位于可执行文件的末尾附近,并且还需要能够获得指向该原始数据的指针。值得注意的是GRUB在启动时将内核加载到内存中。

我们之前的想法之一就是编写一个程序将数据转换为C源文件,其中数据表示为字节数组,但我们认为这有点混乱,我们宁愿把它链接起来在直接。

任何见解?我不需要可怕的细节只是对需要做什么的广泛概述。我想我们可能需要对链接器脚本进行一些更改。

1 个答案:

答案 0 :(得分:2)

在完成将任意数据添加到ELF文件的链接后,请查看调用objdump --add-section

或者,如果您正在编写内核,则可以执行Linux加载initrd所做的操作,只需让GRUB加载内核,然后将数据单独加载到已知内存位置并以此方式访问它。