任意の ARM プロセッサのツールチェーンを使用して、任意のオペレーティング システムをコンパイルできますか? ツールチェーンの OS への依存関係は何ですか?
私の問題は些細なことに聞こえるかもしれません...私はARMのツールチェーンについて何も知りません。
任意の ARM プロセッサのツールチェーンを使用して、任意のオペレーティング システムをコンパイルできますか? ツールチェーンの OS への依存関係は何ですか?
私の問題は些細なことに聞こえるかもしれません...私はARMのツールチェーンについて何も知りません。
Arm プロセッサ用のツールチェーンを使用して、オペレーティング システムをコンパイルできますか?
ターゲットOSに依存します。ARM アーキテクチャ (Linux など) をサポートしている場合は、構成とパッチのみが不足していますが、通常はサポートされています。
ツールチェーンの OS への依存関係は何ですか?
私はGCCの経験しかないので、 binutils、glibc +カーネルヘッダー、そしてGCCと言います。スレッドが必要な場合は、pthreads も必要です。
Linux on ARMをブートストラップする方法については、この記事を参照してください。かなり古いものですが、同じプロセスが適用され、適切なパッチが適用されます。
Arm やその他のプロセッサをターゲットとするツールチェーンを構築するために、 BuildRootを参照することをお勧めします。
一般的に、いいえ。ツールチェーンには、システムlibCライブラリに依存するコンパイラライブラリがあり、これらはオペレーティングシステムから取得されます(オペレーティングシステムのない小さな「ベアメタル」システムをコンパイルする場合を除きます。この場合、他の場所から取得されます)。
したがって、特定のツールチェーンでコンパイルされたプログラムは、互換性のあるlibCを備えたシステムでのみ機能します。たとえば、ARM GlibCベースのシステム用のツールチェーンがある場合、GlibCを使用する標準のARM Linuxシステムのプログラムをコンパイルすることはできますが、uClibcを使用するARMuClinuxシステムやARMベアメタルシステムでは機能しません。 Newlibを使用します。
他にもいくつかのマイナーな依存関係がありますが(私はあまり詳しくありません)、それが最大の依存関係です。
多くのクロス プラットフォーム コンパイラが利用可能で、多くのバージョンの gcc も提供されています... arm 用にカーネルをコンパイルするには、クロス コンパイラを取得し、カーネル フォルダの最上位の Makefile を変更する必要があります。例: ARCH = arm および CROSS_COMPILE = arm-linux- 、 CROSS_COMPILE 引数は、gcc-cross-platform ツールをどこに保存したかによって異なります...
ここで ARCH は Architecture の略です