2

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

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

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

有什么见解吗?我不需要令人毛骨悚然的细节,只需要对需要做什么的广泛概述。我认为我们可能必须对链接描述文件进行一些更改。

4

1 回答 1

2

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

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

于 2010-12-14T23:06:30.310 回答