Kick Out the World

技術的なメモとかポエムを書きます。

Buildrootのドキュメント斜め読み Chaper8

Chapter 8. Buildrootの使い方

8.1 make tips

他章のものを記載する

コマンド 内容
make help サブコマンド(target)を表示する
make V=1 makeで実行されるコマンドの表示
make list-defconfigs 各ボード用に利用可能なmenuconfigを表示する
make clean 対象アーキテクチャやツールチェイン変更時に使用する
make ckean all 再フルビルド実施
make manual docs/manualに生成されるマニュアルの生成
make manual-clean マニュアルのクリア
make distclean ターゲットのクリア
make -dirclean パッケージの削除
make source dlフォルダ配下からオフラインビルドする
make O= outputフォルダを指定する
make graph-depends 依存関係のグラフを生成する

8.2 フルビルドし直すタイミング

下記でも必ず必要ではないユーザが適宜判断し実行する * アーキテクチャが変わったとき * ツールチェイン設定変更 * 依存するライブラリ追加する * パッケージのサブオプション変更時 * RFSのスケルトン変更時

8.3 パッケージの再ビルドについて

  • パッケージの削除は再フルビルドするしかない
    • stagingとか関連する場合
    • 単体で削除可能ならoutput/buildから削除するかmake <package>-dircleanでもよい
    • output/build/<package>-<version>/配下にビルド状態を管理するスタンプファイルstamp_<step-name>を生成する

8.4. Offline builds

8.5. Building out-of-tree

(makeのサブコマンドのであるため省略)

8.6. 環境変数

(関連する項目で見るため省略)

8.7. 効果的なファイルシステムの扱い方

sparseファイルについて(よくわからん)

8.8. パッケージの依存関係をグラフ化する

*make graph-depends * output/graphs/graph-depends.pdfに生成される * Graphvizを入れる必要がある * apt install graphviz * システムがでかくなると見づらいのでmake <pkg>-graph-dependsでパッケージ単位で出力するともできる * PDF以外のフォーマットでも出力可能 * BR2_GRAPH_OUT=svg make graph-depends * BR2_GRAPH_DEPS_OPTS環境変数で制御を変更可能

ビルド時間のグラフ化

  • どのパッケージのビルドに時間がかかっているかを可視化することができる
  • make graph-build
  • python-matplotlibを入れる必要がある
  • 数種類のファイルが生成される
  • build.hist-build.pdf
    • 各パッケージごとにかかった時間がビルド実行順にヒストグラムになる
  • build.hist-duration.pdf
    • ビルド時間がかかった順のヒストグラフ
  • build.hist-name.pdf
    • ファイル名順のヒストグラフ
  • build.pie-packages.pdf
    • ビルド時間の円グラフ
  • build.pie-steps.pdf
    • ビルド行程ごとの円グラフ
  • 出力フォーマットは変えれる
    • BR2_GRAPH_OUT=png make graph-build

8.10. パッケージごとのファイルシステムサイズのグラフ化

  • 各パッケージのファイルがRFS中に占める割合をグラフ化
  • 生成されるfile-size-stats.csvを利用して、ビルドごとの比較をすることができる ** utils/size-stats-compare -h

8.11. Eclipseインテグレーション

使わないので省略

8.12. 応用

8.12.1. ツールチェインをBuildRoot外で使う

output/host/bin/をPATHに追加するなりする

8.12.2. Buildrootでgdbを使う

設定でgdbserverを有効にするなりすれば使える

8.12.3. Buildrootでccacheを使う

省略

8.12.4. ダウンロードしたパッケージの配置先

BR2_DL_DIRで指定できる

8.12.5. パッケージ単位でのmakeサブコマンド

make <package>-<target>

8.12.6. Using Buildroot during development

<pkg>_OVERRIDE_SRCDIRでパッケージに対してファイルを追加できる


調査はだいぶ前に終わってたけど、しばらく体調を崩していてかけなかった

ここまでの情報でだいたいBuildrootにおけるシステム構築方法を確認することができ、以降はBuildroot自身に変更を加えて独自パッケージ追加するといったこととなるので、ドキュメント斜め読みとしてはここまでかな。