8

私は 2 つのリンカー スクリプトを持っています。common.ldいくつかのシンボルを定義するスクリプトとapp.ld、これらの定義を使用してセクションを配置するスクリプトです。

2 つのファイルを一緒に cat し、それを (gcc 経由で) ld にフィードすると、機能します。INCLUDEコマンドを使用する場合:

INCLUDE common.ld

エラーが発生します:

ld.exe: フラグの構文が無効です

collect2: ld が 1 つの終了ステータスを返しました

私は何を間違っていますか?別のロード スクリプトを含める正しいステートメントはどれですか?


http://www.scoberlin.de/content/media/http/informatik/gcc_docs/ld_3.html#IDX204から:

ファイル名を含める

この時点で、リンカー スクリプトのファイル名を含めます。ファイルは、現在のディレクトリ、および -L オプションで指定された任意のディレクトリで検索されます。INCLUDE の呼び出しは、最大 10 レベルの深さまでネストできます。

:コードレッドのフルバージョンのarm gccツールを使用して、Windows 7 PCでこれを実行しています:

arm-none-eabi-gcc (GNU Tools for ARM Embedded Processors) 4.6.2 20121016 (release) [ARM/embedded-4_6-branch revision 192487

4

3 に答える 3

1

インクルード構文は正しいはずINCLUDE common.ldです。ここでは問題なく動作します。

Windows 版の ld にバグがあったのかもしれませんし、リンカー スクリプトのいずれかまたは環境に何か問題があったのかもしれません。

于 2014-03-22T09:07:35.010 に答える
0

ツールチェーンを arm_eabi-2011.03 から arm-2012.09 に更新します。その後、問題が発生しました。「フラグ」の問題を回避するために、INCLUDEd ファイルをリンク スクリプトにコピーする必要があります。

新しいバージョンのツールチェーンが古いバージョンの機能をどのように台無しにするのでしょうか?

于 2014-10-31T22:05:39.373 に答える