Qt6 のクロス開発環境ができたところで、補足編です。
クロス開発環境構築の手順(再掲)
- RaspberryPi 側の準備(→ 【準備編】)
- OS イメージ作成と起動
- Qt の開発に必要なパッケージの導入
- 環境設定
- Windows 側の準備
- Qt 開発環境の導入
- クロスコンパイラを導入
- sysroot のコピー
- CMake と Ninja-build を実行できるようにする
- pkg-config の導入と設定
- CMake 用の設定ファイル作成
- Qt のビルド (→ 【ビルド&実行編】)
- ソースコード取得
- configure
- ビルドとインストール
- RPi へのコピー
- QtCreator の設定
- リモートデバイスの設定
- Qt キットの設定
- サンプルの動作確認
- 補足 (→ この記事はここから)
- クロス開発環境を別の WinPC へ持ち込みたい
- RPi側実行環境の OS イメージを小さくしたい
- X Window アプリを作れるようにしたい
- 32bit のクロス環境を作りたい
- まだできていないこと
補足
クロス開発環境を別の WinPC へ持ち込みたい
Qt6 のビルド結果(=C:\Qt\qt6-rpi\
の中身)を持ち込めます。
- 準備編
- RPi の設定等は適宜
- Windows 側の準備 を同じように行う
- sysroot の内容は同じものをコピーで OK
- ビルド&実行編
-
C:\Qt\qt6-rpi
フォルダをコピーで OK- Qt6 のソースダウンロード、configure、ビルドは不要
- QtCreator の設定は同じように行う
-
RPi側実行環境の OS イメージを小さくしたい
準備編で大量の -dev パッケージを apt install していますが、開発用パッケージなので実行環境には不要です。
- PRiOS Lite のイメージを作成
- 起動して以下のパッケージを追加
$ sudo apt install libgles2-mesa libdrm2 libgbm1 libinput10 libpcre2-16-0 libegl1-mesa libxkbcommon0
- 準備編→RaspberryPi側の準備→環境設定をする
-
/opt/qt/
にC:\Qt\qt6-rpi
の内容をコピー
以上で、概ね動きます。
QtCreator からのデプロイには公開鍵含むリモートデバイスの設定が必要なのでそこだけ気をつけましょう。
X Window アプリを作れるようにしたい
Raspberry Pi 関連の記事を検索すると X Window 上で動くアプリを作る需要もそこそこありそうです。
その場合、以下のように手順を変更します。
- 準備編
- RaspberryPi側の準備
- sysroot を作る RPi OS を Lite ではなく Desktop で行う
- apt install で導入するパッケージは同じ1
- 環境設定で追加する環境変数を変更
$ echo "export LD_LIBRARY_PATH=/opt/qt/lib" >> ${HOME}/.profile $ echo "export QT_QPA_PLATFORM=xcb" >> ${HOME}/.profile $ echo "export DISPLAY=:0" >> ${HOME}/.profile
- pkg-config が必須なので導入
- sysroot を作る RPi OS を Lite ではなく Desktop で行う
- RaspberryPi側の準備
- ビルド&実行編
- Qt のビルド
- configure の実行を以下のように変更
C:\Qt\qt6build\build> ..\qt5\configure -release -no-pch -opengl es2 -qpa xcb \ -nomake examples -nomake tests -qt-host-path C:/Qt/6.5.1/mingw_64 \ -extprefix C:/Qt/qt6-rpi -prefix /opt/qt -device linux-rasp-pi3-g++ \ -device-option CROSS_COMPILE=aarch64-linux-gnu- -- \ -DCMAKE_TOOLCHAIN_FILE=C:/Qt/qt6build/toolchain.cmake \ -DQT_FEATURE_xcb=ON -DQT_FEATURE_xcb_xlib=ON -DQT_FEATURE_xlib=ON
- Qt のビルド
この修正手順で作成した Qt6 には X 対応が追加になります。
追加なので EGLFS 向けの開発も同じように可能です。
32bit のクロス環境を作りたい
手順はおそらく違いません。
- クロスコンパイラ・ツールチェインを 32bit のものに変更する
- sysroot を 32bit の RPiOS で作る
- 64bitのものを流用しない。全く別物です
- MinGW32 の環境でビルド等を行う
ぐらいでできると思います。
未確認、32bit使わないので・・・
まだできていないこと
最後にここまでの手順でできていないこと、改善したいことについて
- qmake からビルドできない
- qmlproject の実行も対応したいです
- 作成したライブラリに rpath が効いていない
- LD_LIBRARY_PATH の設定をなしにしたいです
- Windows 側で symlink をなんとかしたい
改善ができたら随時記事を修正していきたいです。
(以上)
-
実はLiteで作ったsysrootにXWindow向け開発に必要なパッケージは全て含まれています。すでにLiteで作成済みでしたらそのまま使い回せます。 ↩