2

これまで、私は常に MSVC++ の下でリソースを使用してプログラム内から生データにアクセスしてきました。リンカを直接操作したことはありませんでしたが、今では Linux の下にあり、クロスコンパイラを使用して生成しています。エルフファイル。友人と私はおもちゃの OS に取り組んでいます。

ある時点で達成する必要があることの 1 つは、かなり大きな任意の生データを実行可能ファイルにリンクすることです。データを実行可能ファイルの末尾近くに配置し、その生データへのポインターも取得できるようにする必要があります。GRUB がブート時にカーネルをメモリーにロードしていることは、おそらく注目に値するでしょう。

以前のアイデアの 1 つは、データを C ソース ファイルに変換するプログラムを作成し、データをバイト配列として表現することでした。

洞察はありますか?恐ろしい詳細は必要ありません。何をする必要があるかの大まかな概要だけです。おそらく、リンカー スクリプトに変更を加える必要があると思います。

4

1 に答える 1

2

objdump --add-sectionリンクを完了した後の呼び出しを見て、任意のデータを ELF ファイルに追加します。

または、カーネルを作成している場合は、Linux がロードするのinitrdと同じようにして、GRUB にカーネルをロードさせてから、データを既知のメモリ位置に個別にロードして、その方法でアクセスすることができます。

于 2010-12-14T23:06:30.310 に答える