【転載】buildrootチュートリアル
9952 ワード
buildrootチュートリアル
buildrootとは
BuildrootはLinuxプラットフォーム上のオープンソースの組み込みLinuxシステムの自動構築フレームワークです.
0.buildrootをダウンロードする
Buildrootバージョンは2ヶ月、2月、5月、8月、11月にリリースされます.バージョン番号のフォーマットはYYYYです.MM、例えば2013.02、2014.08.
からhttp://buildroot.org/downloads/リリースパッケージを入手します.
githubウェアハウスから取得することもできます.
buildrootディレクトリ構造
解凍buildrootソースディレクトリは次のとおりです. arch:CPUアーキテクチャに関する構成スクリプト board:システムの構築時にboardのデフォルトのbootとLinux kernelプロファイル、およびいくつかのボード関連スクリプト boot:uboot構成スクリプトディレクトリ configs:マシンプラットフォームまたはシナリオで使用するツールチェーン、boot、kernel、各種アプリケーションパッケージの構成 を記録するボードレベルのプロファイル. dl:downloadの略記、いくつかのオープンソースパッケージをダウンロードします.1回目のダウンロード後、次回は公式サイトからダウンロードするのではなく、dl/ディレクトリの下からソースパッケージを取り出して、時間を節約します. docs: fs:各種ファイルシステムの自動構築スクリプト linux:Linux kernelを格納する自動構築スクリプト package:dlディレクトリをコンパイルしてダウンロードするオープンソースパッケージ を構成するサードパーティのオープンソースパッケージの自動コンパイル構築スクリプト support: system:ルートファイルシステムrootfs を作成するためにoutput/ディレクトリの下にコピーされるファイルシステムディレクトリとデバイスノードを格納テンプレート. toolchain/ディレクトリには、各種作成ツールチェーンのスクリプト が格納されている.
コンパイルされたoutput出力ディレクトリの説明: images/ストレージすべてのイメージ(カーネルイメージ、ブートローダ、ルートファイルシステムイメージ)の場所.これらは、ターゲットシステムに配置する必要があるファイルです. build/すべてのコンポーネントを構築する場所(ホスト上のBuildrootに必要なツールとターゲット向けにコンパイルされたパッケージを含む).このディレクトリには、各コンポーネントにサブディレクトリが含まれます. host/には、ホスト用に構築されたツールとターゲットツールチェーンが含まれます. staging/は、内部ターゲットツールチェーンhost/へのシンボルリンク である. target/ターゲットの完全なルートファイルシステムをほとんど含んでいます.デバイスファイル/dev/(Buildrootはrootとして実行できず、rootとして実行したくないため、Buildrootは作成できません)以外は、必要なものはすべて存在します.
ツールチェーン
Buildrootは、クロスコンパイルツールチェーンに2つのソリューションを提供します.の内部ツールチェーンは、Buildroot toolchainと呼ばれ、インタフェースを構成しています. 外部ツールチェーンExternal toolchain.ここで選択するのは外部ツールチェーンであり、ツールチェーンのソースはダウンロードを選択するか、/opt/ali/ali-linux/Codescapeなどの指定ツールチェーンプレフィックスを選択することができる.GNU.Tools.Package.2017.10-05.for.MIPS.MTI.Linux.CentOS-5.x86_64/usr/bin/mips-mti-linux-gnu-、ここで選択したダウンロードツールチェーンのソースコードです.ダウンロードが完了すると、ツールチェーンをコンパイルするための元のツールチェーンが(BUILD_ROOT)/host/opt/ext-toolchain/ディレクトリに解凍され、ツールチェーンのソースコードコンパイルが$(BUILD_ROOT)/host/usr/binにインストールされ、ツールチェーンが使用できます.
1.buildroot常用makeコマンド
*make help:package、uclibc、busybox、linux、ドキュメント生成などの構成を含むbuildrootのmakeの使用詳細が表示されます. make menuconfig(make linux-menuconfig...):グラフィカル構成 を行う. make:コンパイル makeコマンドでは、通常、次の手順に従います.ソースファイルをダウンロードします(必要に応じて). クロスコンパイルツールチェーンを構成、構築、インストールするか、外部ツールチェーンのみをインポートします. 選択したターゲットパッケージを構成、構築、インストールします. カーネルイメージを構築します(選択した場合). ブートローダイメージを構築する(選択された場合). 選択した形式でルートファイルシステム を作成する make clean:delete all build products (including build directories, host, staging and target trees, the images and the toolchain) make distclean:make clean+に等しい削除構成 make show-targets:今回の構成でコンパイルするすべてのターゲット が表示されます. make pkg-target:pkgモジュール を個別にコンパイル make pkg-rebuild:pkg を再コンパイル make pkg-extract:解凍pkgのみダウンロード、コンパイルせず、pkg解凍後output/build/対応pkg-dirディレクトリ下 make pkg-source:あるpkgだけダウンロードして、何もしない 2.buildrootフレームワーク
Buildrootは、関数フレームワークと変数コマンドフレームワークを提供し、そのフレームワークで作成されたapp_pkg.mkというMakefile形式の自動構築スクリプトはpackage/pkg-generic.mkというコアスクリプト展開はbuildrootホームの下のMakefileに埋め込まれます.
最後にmake allはBuildrootホームの下のMakefileを実行し、希望するイメージを生成します.package/pkg-generic.mkでは同ディレクトリのpkg-downloadを呼び出す.mk、pkg-utils.mkファイルは、ダウンロード、解凍、パケット依存ダウンロードコンパイルなどの機械的なプロセスを自動的に実現しています.
フォーマット通りにappを書く必要がある限りpkg.mkは、ダウンロードアドレス、リンク依存ライブラリの名前など、特有の構築の詳細を入力すればよい.要するに、Buildroot自体は構築プロセスのフレームワークを提供し、開発者はフォーマットに従ってスクリプトを書き、必要な構築の詳細を提供し、システム全体を構成し、最後に自動的にシステムを構築します.
3.独自のパッケージを追加
3.1 package/configを追加する.in入口
次の文を追加します.
自分のパッケージにエントリを追加することで、make menuconfigのときに自分のパッケージのConfigを見つけることができます.in,make menuconfigでhelloworldを選択すると‘BR 2_PACKAGE_HELLOWORLD=y′も同期する.configで行きます.
3.2 APP対応のConfigを構成する.inとmkファイル
パッケージにディレクトリhelloworldを追加し、Configを追加します....mk
1)Config.in
helloworld/Config.Inファイルは、make menuconfigでhelloworldを選択できます.BR 2_だけPACKAGE_HELLOWORLD=yの条件でhelloworldが呼び出されます.mkコンパイル
2)helloworld.mk
HELLOWORLD_VERSION:= 1.0.0 HELLOWORLD_SITE:= $(CURDIR)/work/helloworld HELLOWORLD_SITE_METHOD:=local HELLOWORLD_INSTALL_TARGET:=YES
define HELLOWORLD_BUILD_CMDS ( M A K E ) C C = < s p a n c l a s s = "h l j s − s t r i n g "> "(MAKE) CC="(MAKE)CC="(TARGET_CC)"LD="$(TARGET_LD)"-C $(@D) all endef
define HELLOWORLD_INSTALL_TARGET_CMDS $(INSTALL) -D -m 0755 $(@D)/helloworld $(TARGET_DIR)/bin endef
define HELLOWORLD_PERMISSIONS/bin/helloworld f 4755 0 0 - - - - - endef
$(eval $(generic-package))
helloworld.mkには、ソースコードの位置、インストールディレクトリ、権限設定などが含まれます.
3.3 APPソースとMakefileの作成
3.4 make menuconfigでAPPを選択する
上からpackage/config.Inエントリの構成では、make menuconfig、Target packagesに入ると「myown(fuzidage)package」エントリが1つ多く見え、helloworldを選択できます.その後make savedefconfig、helloworldの構成はxxx_に保存されます.defconfigで
3.5 APPのコンパイル
プラットフォーム全体と一緒にAPPをコンパイルすることができます.またはmake helloworld単独でコンパイルします.
この2つのファイルは、このAPPを選択するとoutput/build/helloworld-1.0.0フォルダにコピーされます.
生成されたbinファイルはoutput/target/bin/helloworldにコピーされ、このファイルはファイルシステムにパッケージされます.
対応するソースファイルを空にする必要がある場合は、make helloworld-dircleanを使用します.
4パッケージの再コンパイル方法
最初の完全なコンパイル後、ソースパッケージを再構成する必要がある場合は、buildrootのルートディレクトリの下で直接makeすることはできません.buildrootは、ソースコードを再構成したことを知らないので、最初にコンパイルしたファイルだけをルートファイルシステムのミラーファイルに再パッケージします.
では、次の2つの方法で再コンパイルできます.ソースパケットを直接削除し、make all はxxx-rebuildを行い、make all コンパイルインストールを再構成する場合: 5.個別生成ターゲット(build out of tree)
コンパイルによって生成されたoutputディレクトリが/home/lybで表示されます.
具体的なbuildトレーニングチュートリアルは以下のリンクをクリックします.buildroot公式トレーニングチュートリアル
変換元:buildrootチュートリアルbuildroot
buildrootとは
BuildrootはLinuxプラットフォーム上のオープンソースの組み込みLinuxシステムの自動構築フレームワークです.
0.buildrootをダウンロードする
Buildrootバージョンは2ヶ月、2月、5月、8月、11月にリリースされます.バージョン番号のフォーマットはYYYYです.MM、例えば2013.02、2014.08.
からhttp://buildroot.org/downloads/リリースパッケージを入手します.
githubウェアハウスから取得することもできます.
git clone git://git.busybox.net/buildroot
buildrootディレクトリ構造
解凍buildrootソースディレクトリは次のとおりです.
コンパイルされたoutput出力ディレクトリの説明:
ツールチェーン
Buildrootは、クロスコンパイルツールチェーンに2つのソリューションを提供します.
1.buildroot常用makeコマンド
*make help:package、uclibc、busybox、linux、ドキュメント生成などの構成を含むbuildrootのmakeの使用詳細が表示されます.
Buildrootは、関数フレームワークと変数コマンドフレームワークを提供し、そのフレームワークで作成されたapp_pkg.mkというMakefile形式の自動構築スクリプトはpackage/pkg-generic.mkというコアスクリプト展開はbuildrootホームの下のMakefileに埋め込まれます.
最後にmake allはBuildrootホームの下のMakefileを実行し、希望するイメージを生成します.package/pkg-generic.mkでは同ディレクトリのpkg-downloadを呼び出す.mk、pkg-utils.mkファイルは、ダウンロード、解凍、パケット依存ダウンロードコンパイルなどの機械的なプロセスを自動的に実現しています.
フォーマット通りにappを書く必要がある限りpkg.mkは、ダウンロードアドレス、リンク依存ライブラリの名前など、特有の構築の詳細を入力すればよい.要するに、Buildroot自体は構築プロセスのフレームワークを提供し、開発者はフォーマットに従ってスクリプトを書き、必要な構築の詳細を提供し、システム全体を構成し、最後に自動的にシステムを構築します.
3.独自のパッケージを追加
3.1 package/configを追加する.in入口
次の文を追加します.
menu "myown(fuzidage) package"
source "package/helloworld/Config.in"
自分のパッケージにエントリを追加することで、make menuconfigのときに自分のパッケージのConfigを見つけることができます.in,make menuconfigでhelloworldを選択すると‘BR 2_PACKAGE_HELLOWORLD=y′も同期する.configで行きます.
3.2 APP対応のConfigを構成する.inとmkファイル
パッケージにディレクトリhelloworldを追加し、Configを追加します....mk
1)Config.in
config BR2_PACKAGE_HELLOWORLD
bool "helloworld"
help
This is a demo to add myown(fuzidage) package.
helloworld/Config.Inファイルは、make menuconfigでhelloworldを選択できます.BR 2_だけPACKAGE_HELLOWORLD=yの条件でhelloworldが呼び出されます.mkコンパイル
2)helloworld.mk
################################################################################
#
# helloworld
#
################################################################################
HELLOWORLD_VERSION:= 1.0.0 HELLOWORLD_SITE:= $(CURDIR)/work/helloworld HELLOWORLD_SITE_METHOD:=local HELLOWORLD_INSTALL_TARGET:=YES
define HELLOWORLD_BUILD_CMDS ( M A K E ) C C = < s p a n c l a s s = "h l j s − s t r i n g "> "(MAKE) CC="(MAKE)CC=
define HELLOWORLD_INSTALL_TARGET_CMDS $(INSTALL) -D -m 0755 $(@D)/helloworld $(TARGET_DIR)/bin endef
define HELLOWORLD_PERMISSIONS/bin/helloworld f 4755 0 0 - - - - - endef
$(eval $(generic-package))
helloworld.mkには、ソースコードの位置、インストールディレクトリ、権限設定などが含まれます.
3.3 APPソースとMakefileの作成
3.4 make menuconfigでAPPを選択する
上からpackage/config.Inエントリの構成では、make menuconfig、Target packagesに入ると「myown(fuzidage)package」エントリが1つ多く見え、helloworldを選択できます.その後make savedefconfig、helloworldの構成はxxx_に保存されます.defconfigで
3.5 APPのコンパイル
プラットフォーム全体と一緒にAPPをコンパイルすることができます.またはmake helloworld単独でコンパイルします.
この2つのファイルは、このAPPを選択するとoutput/build/helloworld-1.0.0フォルダにコピーされます.
生成されたbinファイルはoutput/target/bin/helloworldにコピーされ、このファイルはファイルシステムにパッケージされます.
対応するソースファイルを空にする必要がある場合は、make helloworld-dircleanを使用します.
4パッケージの再コンパイル方法
最初の完全なコンパイル後、ソースパッケージを再構成する必要がある場合は、buildrootのルートディレクトリの下で直接makeすることはできません.buildrootは、ソースコードを再構成したことを知らないので、最初にコンパイルしたファイルだけをルートファイルシステムのミラーファイルに再パッケージします.
では、次の2つの方法で再コンパイルできます.
helloworld, output/build/helloworld , make , dl , , 。
helloworld , make helloworld-rebuild, build/helloworld/ , make all( make world make target-post-image)
make <package>-reconfigure; make all
make O=/home/lyb/output
コンパイルによって生成されたoutputディレクトリが/home/lybで表示されます.
具体的なbuildトレーニングチュートリアルは以下のリンクをクリックします.buildroot公式トレーニングチュートリアル
変換元:buildrootチュートリアルbuildroot