3

私はこの種のビジネスの初心者です。クロスコンパイルしLinux kernelました。しかし、私が知っておくべきことを尋ねる質問はほとんどありません。

Linuxカーネルをコンパイルするとき、ターゲットプラットフォームがであるため、このコマンドを使用していますARM

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-

そのようcross compileなソフトウェアはありますか、それともOpen Sourceソフトウェアがサポートしているかどうかはソフトウェアのリリースによって異なりますcross compilationか?

Linuxカーネルソースにはarch folder個別のアーキテクチャ用のが含まれていますがgcc、、、含まれていません、なぜですかgLibcbinutils

しかし、それらは可能性がありますcross-compiledなぜこのような行動が起こるのか誰か教えてもらえますか?

cross-compile要件ごとに異なる種類のソフトウェアへの標準的な方法はありますか?この種のビジネスに堪能な方がいらっしゃいましたら、私を導いてください。

ありがとうございました。

4

2 に答える 2

2

Linuxカーネルには、クロスコンパイルだけでなく、複数アーキテクチャのクロスコンパイル用にセットアップされた、非常に特殊な独自のビルドシステムがあります。これが、一連のarchフォルダーが存在する理由です。

多くの (決してすべてではない) オープンソースのユーザー空間ソフトウェアは、GNU autoconfを使用して構成とビルド プロセスを管理します。の目的はautoconf、カーネル ビルド スクリプトとは多少異なります。これにより、さまざまな微妙に異なる UNIX ライクなビルド ホスト上で、同じようにさまざまなビルド ターゲットに対してソフトウェアをビルドできます。

autoconfちょっとした作業でクロスコンパイルに使用できます。ここにいくつかのヒントがあります。原則として、ビルド プロセスは次のことを知る必要があります。

  • 使用するツールのセット (gcc、binutils など)
  • ターゲットのヘッダーとライブラリがステージングされる場所
  • 結果の製品をインストールする場所。

gccbinutilsクロスツールがホストの独自のツールと一緒に開発ホストにインストールされるという点で、少し特殊なケースです。ビルド プロセスでは両方を使用する可能性があるため、実行可能な検索パスによってツールの選択が完全に行われることは受け入れられません。代わりに、クロスツールは、ターゲット固有の名前形式で名前が付けられます。

arm-linux-gnueabi-gcc

i686-apple-darwin11-llvm-gcc

于 2012-12-13T10:17:58.167 に答える
2

configure スクリプトを使用する場合、Linux でソフトウェアのクロス コンパイルを行う一般的な方法があります。

インストールするパッケージのソース コードを抽出します。

構成スクリプトが含まれているかどうかを確認します。

その場合は、./configure --help を実行して、コンパイルでサポートされているオプションを見つけます。

私は通常、次のコマンドを使用してクロスコンパイルします。

./configure --host=arm-none-linux-eabi --prefix=/path/to/where/you/want/to/install

パッケージに基づいて、追加のオプションを指定する必要がある場合があります。--with-out= libtiff などの例。

configure スクリプトがない場合は、make ファイルを微調整します。

于 2012-12-14T07:07:40.320 に答える