3

組み込みプラットフォーム用のコードを書いています。サードパーティの SDK とリンクする必要があります。ただし、その SDK のシンボルは特定のセクション ( ではありません.text) に移動する必要があります。それは可能ですか?

xtensa-lx106 プロセッサ用の GNU ベースのツールチェーンを使用し、ESP8266 チップ用にビルドします。

4

1 に答える 1

3

そのためには、使用しているリンカー スクリプトを変更する必要があります。

最終的なバイナリをリンクする行の makefile にある可能性があります。-Tリンカー スクリプトは、オプションを介して渡されるファイルです。

これを取得したら、テキスト エディターで開き、SECTIONディレクティブを検索します。.textおそらく、最終的なテキスト セグメントに入る必要があるすべてのセクションをリストする、その中に呼び出されるグループが見つかるでしょう。

SDK のコード セクション名をこのリストに追加するだけです。SDK に共通のプレフィックスを持つ複数のセクションがある場合は、ワイルドカードを使用することもできます (これは非常に頻繁に発生します)。

.dataグループと必要に応じてグループを使用して同じことができます.bss

これらの変更を行った後、実行可能ファイルを再リンクすると、SDK ライブラリのセクションが.textおよび.dataグループに直接移動するはずです。

MEMORY必要に応じて、リンカー ファイルの先頭にある宣言で新しいグループを作成することもできます。これにより、リンカーが使用する正確なアドレスを直接制御できます。次に、SDK ライブラリ セクションを、作成した新しいメモリ領域に直接リダイレクトすると、ライブラリが常に同じアドレスに配置されます。

于 2015-07-08T13:20:59.163 に答える