2010-12-11 52 views
2

到目前爲止,我一直使用MSVC++下的資源來訪問我的程序中的原始數據,而且我從來沒有直接使用鏈接器,但現在我處於Linux和我正在使用交叉編譯器來生成精靈文件。我和一個朋友正在研究玩具操作系統。使用LD將原始數據/資源鏈接到可執行文件

我們需要在某個時間點完成的一件事是將相當大的任意原始數據鏈接到可執行文件中。我們希望數據位於可執行文件末尾附近,並且需要能夠獲取指向該原始數據的指針。可能值得注意的是GRUB在啓動時將內核加載到內存中。

我們以前的想法之一就是編寫一個程序來將數據轉換成一個C源文件,其中數據表示爲一個字節數組,但我們認爲這有點麻煩,我們寧願擁有它直接鏈接。

任何見解?我不需要那些令人毛骨悚然的細節,只是對需要完成的事情進行廣泛的總結。我想我們可能必須對鏈接器腳本進行一些更改。

回答

2

在完成鏈接以將任意數據添加到ELF文件後,請查看調用objdump --add-section。另外,如果您正在編寫內核,您可以執行Linux的操作來加載initrd,並讓GRUB加載您的內核,然後單獨將數據加載到已知的內存位置並以此方式訪問它。