LoginSignup
10
5

More than 3 years have passed since last update.

Raspberry Pi 3 で Qt 5 をビルドして動かす方法(Yocto layer Boot2Qt編)

Last updated at Posted at 2019-08-24
1 / 15

はじめに

The Qt Companyが提供しているYoctoレシピを使用して
Raspberry Pi3
で動作するQt5.12.3のLinux imageと開発環境の構築をおこないます。

詳細は、以下のディレクトリ!
https://doc.qt.io/QtForDeviceCreation/qtee-custom-embedded-linux-image.html


Yoctoとは

Linuxをビルドするパッケージ管理プロジェクトです。

  • Linux OS
  • 使用するLinux library/module関連

をbitbakeというビルドツールを利用して、buildをおこないます。
またレシピという概念を利用して、簡単?に必要なlibrary/moduleの追加を行えます。


Yoctoのバージョン

Yoctoには、様々なバージョンがあります。
使用するレシピでどのようなバージョンを使用するか事前に調べておく事が良いです。
https://wiki.yoctoproject.org/wiki/Releases


YoctoレイヤーBoot2Qtをbuildする


Pokyの導入

Poky は Yocto Project のリファレンス・ビルド・システムです。
Poky には、BitBake、OpenEmbedded-Core、BSP (Board Support Package) といった基本的なもの含まれています。

gitリポジトリから取得する

$ cd /opt/yocto
$ git clone git://git.yoctoproject.org/poky
$ cd /opt/yocto/poky


Yoctoのバージョンをsumoにする

Yoctoのリリースページ(https://wiki.yoctoproject.org/wiki/Releases)
Boot2-Qtのページ(https://code.qt.io/cgit/yocto/meta-boot2qt.git/)
のCommit履歴を見るとQt5.12.3はsumoブランチにあり。
今回は、sumo current version 2.5.3をbanch取得する

$ git checkout -b Branch_yocto-2.5.3 yocto-2.5.3
Switched to a new branch 'Branch_yocto-2.5.3'

あらかじめBuildに使用する環境変数をセットします。

$ source oe-init-build-env


Boot2-Qtのレシピの取得

poky ディレクトリ内でmeta-boot2qtのsumo branchを取得する
https://code.qt.io/cgit/yocto/meta-boot2qt.git/
から取得

$ git clone -b sumo git://code.qt.io/yocto/meta-boot2qt.git
$ cd ./meta-boot2qt
$ git checkout -b Tag_v5.12.3 v5.12.3

Boot2-Qtのを取得

git clone した meta-boot2qt以下のb2qt-init-build-envのHelpが参考になります。

$ ./b2qt-init-build-env help
Usage: b2qt-init-build-env COMMAND [ARGS]

Initialize build environment:
  b2qt-init-build-env init --device <name> [--reference <mirror path>] [--manifest-dir <dir path>] [--internal]
    --device <name>: target device name or 'all'
    --reference <mirror path>: path to local mirror, initialized previously with 'b2qt-init-build-env mirror'
    --manifest-dir <dir path>: path to a directory containing repo manifest file(s)
    --internal: fetch internal repositories, available only inside The Qt Company network.
Initialize local mirror:
  b2qt-init-build-env mirror
List available devices:
  b2qt-init-build-env list-devices

たとえば、

./b2qt-init-build-env list-devices

を使用することによりBuildできるデバイス一覧が確認できます。


Boot2-QtにてRaspberry Pi3を設定する

$ b2qt-init-build-env init --device raspberrypi3

をおこなう事によりBuildに必要なレシピ群を取得し、Raspberry Pi3用の設定がされます。
poky/build のディレクトリに自動で移動しますので、そのまま

$ export MACHINE=raspberrypi3
$ source ./setup-environment.sh

を実行する。


Boot2-Qtを利用したYoctoのbuild

$ bitbake b2qt-embedded-qt5-image
$ bitbake meta-toolchain-b2qt-embedded-qt5-sdk

boot2Qtのimageは、以下の所にある。

The target rootfs image is located in the /tmp/deploy/images/${MACHINE}/b2qt-automation-qt5-image-${MACHINE}.img

/opt/yocto/poky/build/build-raspberrypi3/tmp/deploy/images/raspberrypi3
b2qt-embedded-qt5-image-raspberrypi3.img

b2qt-embedded-qt5-image-raspberrypi3.imgはシンボリックリンクとなっており実体は
b2qt-embedded-qt5-image-raspberrypi3.img -> b2qt-embedded-qt5-image-raspberrypi3-20190606081703.rootfs.rpi-sdimg

容量をみてみると、1.6GB程度なので、4GBぐらいのmicroSDCardを用意するば良さそうです。
-rw-r--r-- 2 sazus sazus 1.6G 6月 6 17:24 b2qt-embedded-qt5-image-raspberrypi3-20190606081703.rootfs.rpi-sdimg
lrwxrwxrwx 2 sazus sazus 68 6月 6 17:24 b2qt-embedded-qt5-image-raspberrypi3.img -> b2qt-embedded-qt5-image-raspberrypi3-20190606081703.rootfs.rpi-sdimg
lrwxrwxrwx 2 sazus sazus 68 6月 6 17:24 b2qt-embedded-qt5-image-raspberrypi3.rpi-sdimg -> b2qt-embedded-qt5-image-raspberrypi3-20190606081703.rootfs.rpi-sdimg


microSDCardへの書き込み

$ cd /opt/yocto/poky/build/build-raspberrypi3/tmp/deploy/images/raspberrypi3
$ sudo dd if=./b2qt-embedded-qt5-image-raspberrypi3.img of=/dev/mmcblk0
3186688+0 レコード入力
3186688+0 レコード出力
1631584256 bytes (1.6 GB, 1.5 GiB) copied, 655.174 s, 2.5 MB/s

SDKのInstall

$ ./b2qt-x86_64-meta-toolchain-b2qt-embedded-qt5-sdk-raspberrypi3.sh 

Boot2Qtの実行

Raspberry Piに焼いたmicroSDCardをさして実行します!


10
5
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
10
5