これはフリー ソフトウェアです。コピー条件についてはソースを参照してください。ありません。
保証;特定の目的での商品性やフィットネス性に関するものでも。注: arm ツール チェーンはここからダウンロードできます。表示するには、「ARM」と返信してください。
2. コンパイルターゲットを設定します
カーネルを構成またはコンパイルする前に、まずターゲット CPU アーキテクチャとコンパイル中に使用するツール チェーンを決定する必要があります。これは、最初に決定する必要がある最も基本的な情報です。
現在使用している PC 用にカーネルをコンパイルしている場合は、設定する必要はありません。
それ以外の場合は、組み込み Linux トレーニングを明確に設定する必要があります。
ここではアームを例として説明します。
設定方法は2通りあります():
a)メイクファイルを変更する
カーネル ソース コードのルート ディレクトリにある Makefile を開き、次の 2 つの Makefile 変数を変更して保存します。
ARCH:=腕
CROSS_COMPILE:=arm-linux-
なお、ここでのcross_compileの設定は、使用するクロスツールチェーンのgccプログラム名がarm-linux-gccであることを前提としています。実際に使用される gcc 名が some-thing-else-gcc の場合は、some-thing-else- と入力するだけです。とにかく、gcc の最後の 3 文字は名前から省略する必要があります。
b) make コマンドを実行するたびに、この情報がコマンド ライン パラメーターを通じて渡されます。
これはmakeツールのコマンドライン引数で指定した変数の値のようです。
###例えば###
カーネルを構成する場合は、を使用します
makeARCH=armCROSS_COMPILE=arm-linux-menuconfigカーネルをコンパイルするときに
を使用します
makeARCH=armCROSS_COMPILE=arm-linux-実際には、PC カーネルのコンパイルでは、ユーザーが明示的に設定しなくても、これら 2 つの項目が設定されていないことを意味するわけではないことに注意してください。ユーザーがこれら 2 つの項目を設定しない場合、カーネル ソース コードの先頭にある Makefile (ソース コードのルート ディレクトリにあります) が、次の方法でこれら 2 つの変数の値を生成するためです。
SUBARCH:=$(shelluname-m|sed-es/i.86/i386/-es/sun4u/sparc64/
-es/arm.*/arm/-es/sa110/arm/
-es/s390x/s390/-es/parisc64/parisc/
-es/ppc.*/powerpc/-es/mips.*/mips/
-es/sh[234].*/sh/)
ARCH?=$(サブアーチ)
CROSS_COMPILE?=
前のコードにより、ARCH は PC コンパイラのアーチ、つまり SUBARCH になりました。このため、PC 上の uname-m の出力が ix86 の場合、ARCH の値は i386 となります。
CROSS_COMPILE の値が構成されていない場合、空の文字列になります。このようにして、使用されるツール チェーン プログラムの名前には arm-linux- のような接頭辞が付けられなくなりました。これは、PC 上で gcc を使用するのと同等です。
最後に、もう少し一言言わせてください。ARCH の価値はさらに一般化される必要があります。カーネルソースコードのarchディレクトリにはi386ディレクトリが存在せず、sparc64などのディレクトリも存在しないためです。
したがって、SRCARCH 変数は最上階の Makefile で構築され、その値は次のコードによって生成されます。このようにして、SRCARCH 変数は最終的にカーネル ソース コード アーカイブ ディレクトリ内の特定のアーキテクチャ名と一致します。
SRCARCH:=$(ARCH)
ifeq($(ARCH),i386)
SRCARCH:=x86
endif
ifeq($(ARCH),x86_64)
SRCARCH:=x86
endif
ifeq($(ARCH),sparc64)
SRCARCH:=sparc
endif
ifeq($(ARCH),sh64)
SRCARCH:=sh
endif
3. カーネルを構成する
カーネルには非常に多くの機能があります。どの部分が必要か、各部分がどのようにコンパイルされるか (カーネルまたはモジュールに)、各部分の動作パラメータは何ですか? これらはすべて構成可能です。このため、コンパイルを開始する前に、構成リストを作成し、カーネル ソースのルート ディレクトリに配置し、.config ファイルという名前を付けて、この .config ファイルに従って必要なカーネルをコンパイルする必要があります。
しかし、カーネルの設定項目が多すぎて、Linux に環境変数をいちいち設定するのは面倒です。さらに、異なる CPU アーキテクチャに対して設定できる設定項目のセットも異なります。arm Linux カーネルでの arm 割り込み実装の詳細な説明。例えば、あるCPUの特定の機能をサポートするかどうかの設定項目 arm Linuxカーネルにおけるarm割り込み実装の詳細説明 は、CPUアーキテクチャに関する設定項目です。したがって、カーネルは簡単な構成方法を提供します。
armを例に挙げると、具体的な方法は以下の通りです。
a) ターゲット CPU アーキテクチャに基づいて、カーネル ソース コードの Arch/arm/configs ディレクトリから、ターゲット システムに最も近い構成ファイル (s3c2410_defconfig など) を見つけ、それをカーネル ソース コードのルート ディレクトリにコピーします。を選択し、 .config という名前を付けます。
現在の PC 用にカーネルをコンパイルしている場合は、次のファイルを初期構成ファイルとしてカーネル ソースのルート ディレクトリにコピーするのが最善であることに注意してください。このファイルは、現在 PC 上で実行されているカーネルをコンパイルするときに使用される設定ファイルです。
/lib/modules/`uname-r`/build/.config
ところで、ここで少し言っておきたいのですが、PC カーネル設定ファイルには非常に多くの機能から選択できます。コンパイルしないとわかりません。コンパイルして初めてわかります。 Linux 発行者がこれを行う目的は、配布する Linux をユーザーのさまざまなニーズを満たすようにすることかもしれません。
b) makemenuconfig を実行して、この構成に必要な変更を加え、終了時に保存を選択すると、新しい構成が .config ファイルに更新されます。
###注記###以上がPC コンパイル カーネルのセットアップ方法と設定: コンパイルのセットアップの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。