2012-04-20 10 views
3

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

NASボックスがexample dmesg outputがあり、ZyXEL NSA210で、/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を使用する(はい)
  • エンディアン(リトルエンディアン)
  • のbitness(32ビット)
  • デフォルトの命令セットモード(アーム)
  • 使用EABI(YES)
  • アーキテクチャレベル--withアーチ=()CPU用
  • エミットアセンブリ--with- CPU =()
  • CPU用チューン()
  • 使用して、特定のFPU()
  • 浮動小数点(ソフトウェア)
  • ターゲットCFLAGS()
  • ターゲットLDFLAGS()

私はそのようなarm926ej-sarmv5larmv5tejとして、「CPU用エミットアセンブリ」「アーキテクチャレベル」とで様々な組み合わせをしようとしてきたが、私は行くどのオプションがわかりませんどこに。

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

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

これまでのところ、Illegal instructionというメッセージが生成されました。

編集

誰もが私の質問に答えるでしょう正しいパラメータを、見つける方法の明示的な参照してARMのGCCツールチェーンの設定に関する記事の方に私を指すことができれば。

答えて

4

は(両方を有するにはポイントがありません)これら

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

又は

--with-cpu=arm926ej-s 

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

そうしないと、オプションが正常に表示されます。

まだ動作しない場合は、ライブラリとヘッダーを確認する必要があります。動的にリンクされたライブラリを使用するには、ターゲット上のバージョンと一致するもの、バージョン賢明、名前が必要です。静的なリンクを使用したい場合や、独自の共有ライブラリをターゲット上にコピーしたい場合(特別な設定が必要な非標準的な場所で)、うまくいくはずです。

いずれにしても、カーネルヘッダーが一致する必要があります。 kernel.orgから最新のカーネルヘッダをダウンロードするだけで済みます。

+0

ご協力ありがとうございます。明確にするために、LinuxでLinuxを実行するためにコンパイルする必要がありますか、またはベアメタルシステム用にコンパイルしてLinuxで実行することはできますか? –

+2

ベアマシンプログラムはLinuxでは実行できません。 – ams

関連する問題