6

crosstool-NGを使用して、NASボックスで実行されているプロセッサをターゲットにするクロスコンパイラを構築しようとしています。

NASボックスはZyXELNSA210であり、dmesg出力の例/proc/cpuinfoあります。

Processor       : ARM926EJ-S rev 5 (v5l)
BogoMIPS        : 183.09
Features        : swp half thumb fastmult edsp java
CPU implementer : 0x41
CPU architecture: 5TEJ
CPU variant     : 0x0
CPU part        : 0x926
CPU revision    : 5
...
Hardware        : Oxsemi NAS
Revision        : 0000
Serial          : 00000d51caab2d00

ターゲットオプションページのオプション、フラグ、および()の現在の設定:

  • ターゲットアーキテクチャ(アーム)
  • MMUを使用する(はい)
  • エンディアン(リトルエンディアン)
  • ビットネス(32ビット)
  • デフォルトの命令セットモード(arm)
  • EABIを使用する(はい)
  • アーキテクチャレベル--with-arch=()
  • CPUのアセンブリを発行します--with-cpu=()
  • CPUに合わせて調整()
  • 特定のFPUを使用する()
  • 浮動小数点(ソフトウェア)
  • ターゲットCFLAGS()
  • ターゲットLDFLAGS()

「アーキテクチャレベル」と「CPU用のアセンブリを出力する」で、、、などのさまざまな組み合わせを試してきましたが、arm926ej-sどちらのオプションがどこに行くのかわかりません。armv5larmv5tej

crosstool-NGにはボックスで使用されているLinuxのバージョンがないため、ターゲットOSをベアメタルに設定しました。

また、ツールチェーンが構築されたら、同じオプションをコンパイラに再度渡す必要がありますか。

これまでのところ、試みによってIllegal instructionメッセージが作成されました。

編集

正しいパラメータを見つける方法を明示的に参照したARMGCCツールチェーンの設定に関する記事を誰かが教えてくれれば、それは私の質問に答えるでしょう。

4

1 に答える 1

7

これらのいずれかを試してください

--with-arch=armv5te
--with-tune=arm926ej-s

また

--with-cpu=arm926ej-s

(両方を持っていても意味がありません)。

それ以外の場合、オプションは問題なく表示されます。

それでも機能しない場合は、ライブラリとヘッダーを確認する必要があります。ダイナミックリンクライブラリを使用する場合は、ターゲット、バージョン、および名前のライブラリと一致するライブラリが必要です。静的リンクを使用する場合、または独自の共有ライブラリをターゲットにコピーする場合(非標準の場所では、おそらく追加の構成が必要になります)、問題はありません。

いずれにせよ、カーネルヘッダーが一致する必要があります。おそらく、kernel.orgからいくつかの最新のカーネルヘッダーをダウンロードできます。

于 2012-04-25T15:15:08.203 に答える