4

Windowsホスト上のARMターゲット(Freescale i.Mx28 )用にLinuxカーネルをクロスコンパイルしようとしています。Linuxホストを使用する場合と比較して、このアプローチが最善ではないことはわかっていますが、残念ながら、それを決定するのは私次第ではありません。

制限は次のとおりです。

これまでのところ、Cygwinを使用してカーネルソースを抽出できるように、Windowsで大文字と小文字が区別されない問題を回避しました。しかし、カーネルのMakefileで問題が発生しました。構成時の依存関係チェックに関するinパスおよびその他のエラー*** multiple target patterns. Stop.から発生するエラーメッセージが表示されるため、Windowsパスにいくつかの問題があると思います。:

      HOSTCC  scripts/basic/fixdep
    /usr/bin/sh: scripts/basic/fixdep: cannot execute binary file
    make[1]: *** [scripts/basic/fixdep] Error 126
    make: *** [scripts_basic] Error 2

Makefileを書き直さずに移植する方法はありますか、それとも特定のMakefileを使用せずにカーネルを構築する別の方法がありますか?ソースツールチェーンまたはIDEを使用してMakefileを処理できますか?与えられた制限内でカーネルを構築する方法はありますか?

4

2 に答える 2

2

カーネルをクロスコンパイルするには、2つのコンパイラが必要です。1つはビルド環境で実行されるツールをビルドできるもので、もう1つはターゲットの実行可能ファイルを作成できるものです。

クロスコンパイルは実際には行われていないようですが、コンパイラを置き換えたばかりです。これで、ARMのビルドに必要なツールをビルドし、Windowsで実行してみます。

使用するクロスコンパイラを指定できます。

make ARCH=arm CROSS_COMPILE=your-compiler-prefix- ...

また、ファイルシステムに問題がある可能性があります。Windowsのファイルシステムでは大文字と小文字が区別されないため、カーネルビルドでは大文字と小文字が区別されるファイルが作成される場合があります。Windowsで大文字と小文字を区別しないファイルシステムのサポートを取得するには、UNIX用のWindowsサービスを参照してください。

于 2012-05-24T09:43:36.823 に答える
1

別のツールチェーンを使用してください!CodeBenchは、CYGPATHの使用などについてWebサイトにどのような目玉を置いても、Windowsホスト上でのLinuxの構築とは互換性がありません。

私はこれを何週間も試しましたが、問題はCodeBenchがPOSIXパスを受け入れることですが、LinuxKernelMakeプロシージャで制御するのが不可能ではないにしても難しいWin32パスを出力することを要求します。

不可能だと言っているのではありません。それは可能だと確信しています。しかし、上司が何を言っても、時間の価値はありません。考慮すべき問題が他にもあります。もう1つの問題は、Linuxのsources./scriptsディレクトリにあるツールがWindows環境と直接互換性がないため、コンパイルされても期待どおりに実行されないことです。パッチを当てる必要があります!

あなたが持っている最高のチャンスは、Cygwinであなた自身のクロスコンパイラをコンパイルすることです。または、すでに調理されているものを見つけてください。

于 2013-01-17T04:54:49.973 に答える