1

すでにこれを読んでいますが、私の問題を解決できません。

objcopy を使用した巨大なバイナリ ファイル

いくつかのテストが必要な場合。リンク時に次のリンクスクリプトを追加する必要があります。

.section_test 0x11323000: {  *(.section_test) }

この自己定義セクションは、ビッグ アドレス 0x11323000 から開始する必要があります。

次に、objcopymips を使用して生のバイナリ ファイルを生成します。

objcopymips -O binary vxWorks.st E0122.bin    

この手順により、最終的な生のバイナリ ファイルである bin ファイルが大きくなりすぎます。27MB から 270MB 以上まで。

この方法では、約 64MB の物理メモリしかないマシンにはロードできません。

セクションを削除せずにサイズを小さくしても、実行可能にすることはできますか?

4

1 に答える 1

3

objcopy -O binaryセクションのロードアドレスに基づいて、プログラムのメモリイメージを生成します。あなたの場合、ロードとランタイムアドレスは.section_test同じです。つまり、ロードアドレスは0x11323000大きなファイルサイズを説明しています。

通常の解決策は、コンパクトなロード イメージで実行可能ファイルを作成し、プログラム自体が必要な部分をロード アドレスからランタイム アドレスにコピーしてから使用することです。

例:

.section_test 0x11323000 : AT(some-small-address) {  *(.section_test) }

また

.section_test 0x11323000 : {  *(.section_test) } AT> some-region-name

このページも確認してください: https://sourceware.org/binutils/docs/ld/Output-Section-LMA.html#Output-Section-LMA

于 2013-09-26T07:15:54.570 に答える