0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Yocto Tips

Last updated at Posted at 2024-09-30

Packageの種類

packages-split/
    libexample/         <-- ${PN} のファイル
    libexample-dev/     <-- ${PN}-dev のファイル
    libexample-doc/     <-- ${PN}-doc のファイル
  • libexample/:実行ファイルやライブラリ
  • libexample-dev/:ヘッダーファイルや開発用シンボリックリンク
  • libexample-doc/:ドキュメント関連ファイル

上記より、開発用リンク(xxx.so)はlibexampleに含めることができない

ビルドしたパッケージに含まれるファイルの確認方法

$ oe-pkgdata-util list-pkg-files <パッケージ名>
<パッケージ名>:
        ファイル1
        ファイル2

なお、do_install内で生成したファイルはFILES変数に含めないと、パッケージにふくまれないのでちゅう

レイヤとレシピの作り方

以下、buildディレクトリ直下で実行

# レイヤを作る
$ bitbake-layers create-layer <レイヤパス>
# BBLAYERS.confに登録する
$ bitbake-layers add-layer <レイヤパス>
# レイヤ一覧を確認
$ bitbake-layers show-layers

# レシピを作る
devtool add <リポジトリURL> -B <branch名>
# レシピの一覧を表示
devtool status
# レシピを削除
devtool reset <レシピ名>
# レシピをレイヤに登録
devtool finish -r <レシピ名> <レイヤパス>

作成したレシピ(Ex:libexample.bb)でデフォルトだとPACKAGESは以下が設定されている。

$ bitbake libexample -e | grep PACKAGES=
PACKAGES="libexample-src libexample-dbg libexample-staticdev libexample-dev libexample-doc libexample-locale  libexample"

このままだと、「bitbake libexample」とすると、そんなパッケージはないよと怒られる。
なので、libexample.bbにパッケージを追加

ライセンス情報が知りたい

build/tmp/deploy/licenses内にライセンス情報がある

レシピの依存関係を知りたい

以下を実行すると、build/task-depends.dotファイルができる。これがレシピの依存関係を表している

$ bitbake -g <recipe name>

yoctoレシピ内でシンボリックリンク張る時の注意点

リンク先を相対パスで指定するようにする。
⇒絶対パスだと、ビルド環境に大きく依存する。

NG例)私の環境では/homeはroot権限になってたので、/home/machine-idが作成されず、ビルドエラー発生

ln -s /home/machine-id ${IMAGE_ROOTFS}${sysconfdir}/machine-id

OK例)yoctoのrootfsの/homeに作成

ln -s ../home/machine-id ${IMAGE_ROOTFS}${sysconfdir}/machine-id

レシピ内でmakefileで使う環境変数の定義の仕方

makefile内で使う環境変数をレシピ内で定義するためには、レシピ内に以下を記載してあげればいい

以下例

EXTRA_OEMAKE += "'LDFLAGS=-L/pf/lib'"

ただし、makeコマンドではなくoe_runmakeコマンドでmake実行をしないと反映されないので注意

do_compile() {
    make # これNG
    oe_runmake # これOK
}

makefile内で${LDFLAGS}と書くと「-L/pf/lib」と置換される

bitbakeで各taskを実行する方法

bitabake <レシピ名> --runall=<タスク>

bitbake <レシピ名> --runall=patch
bitbake <レシピ名> --runall=fetch

変数

WORKDIR

build/tmp/work/.../<レシピ名>/<バージョン>/

よくフェッチしたリポジトリにアクセスするため、以下のように定義されることが多い

S = ${WORKDIR}/git

SはBと一緒で、do_install実行時とかの作業ディレクトリとなる

その他/気づき

  • bbclass内でdo_install:appendとかの追記が可能
  • bbclassを修正後、一度cleanallして実行しないと、キャッシュが利用されるので注意

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?