【転載】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ウェアハウスから取得することもできます.
git clone git://git.busybox.net/buildroot

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にインストールされ、ツールチェーンが使用できます.【转载】buildroot教程_第1张图片 【转载】buildroot教程_第2张图片 【转载】buildroot教程_第3张图片 【转载】buildroot教程_第4张图片

  • 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自体は構築プロセスのフレームワークを提供し、開発者はフォーマットに従ってスクリプトを書き、必要な構築の詳細を提供し、システム全体を構成し、最後に自動的にシステムを構築します.
    【转载】buildroot教程_第5张图片
    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="(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
              helloworld,        output/build/helloworld  ,    make   ,     dl    ,      ,     。      
    
  • はxxx-rebuildを行い、make all
        helloworld   ,      make helloworld-rebuild,   build/helloworld/        ,      make all(  make world    make target-post-image)
    
  • コンパイルインストールを再構成する場合:
         make <package>-reconfigure; make all
    
  • 5.個別生成ターゲット(build out of tree)
    	make O=/home/lyb/output
    

    コンパイルによって生成されたoutputディレクトリが/home/lybで表示されます.

    具体的なbuildトレーニングチュートリアルは以下のリンクをクリックします.buildroot公式トレーニングチュートリアル
    変換元:buildrootチュートリアルbuildroot