LoginSignup
0

Windows で RaspberryPi 向け Qt6 クロス開発 (その3:補足編)

Last updated at Posted at 2023-07-10

Qt6 のクロス開発環境ができたところで、補足編です。

クロス開発環境構築の手順(再掲)

  1. RaspberryPi 側の準備(→ 【準備編】)
    1. OS イメージ作成と起動
    2. Qt の開発に必要なパッケージの導入
    3. 環境設定
  2. Windows 側の準備
    1. Qt 開発環境の導入
    2. クロスコンパイラを導入
    3. sysroot のコピー
    4. CMake と Ninja-build を実行できるようにする
    5. pkg-config の導入と設定
    6. CMake 用の設定ファイル作成
  3. Qt のビルド (→ 【ビルド&実行編】)
    1. ソースコード取得
    2. configure
    3. ビルドとインストール
    4. RPi へのコピー
  4. QtCreator の設定
    1. リモートデバイスの設定
    2. Qt キットの設定
    3. サンプルの動作確認
  5. 補足 (→ この記事はここから)
    1. クロス開発環境を別の WinPC へ持ち込みたい
    2. RPi側実行環境の OS イメージを小さくしたい
    3. X Window アプリを作れるようにしたい
    4. 32bit のクロス環境を作りたい
    5. まだできていないこと

補足

クロス開発環境を別の WinPC へ持ち込みたい

Qt6 のビルド結果(=C:\Qt\qt6-rpi\の中身)を持ち込めます。

  1. 準備編
    1. RPi の設定等は適宜
    2. Windows 側の準備 を同じように行う
      1. sysroot の内容は同じものをコピーで OK
  2. ビルド&実行編
    1. C:\Qt\qt6-rpi フォルダをコピーで OK
      1. Qt6 のソースダウンロード、configure、ビルドは不要
    2. QtCreator の設定は同じように行う

RPi側実行環境の OS イメージを小さくしたい

準備編で大量の -dev パッケージを apt install していますが、開発用パッケージなので実行環境には不要です。

  1. PRiOS Lite のイメージを作成
  2. 起動して以下のパッケージを追加
    $ sudo apt install libgles2-mesa libdrm2 libgbm1 libinput10 libpcre2-16-0 libegl1-mesa libxkbcommon0
    
  3. 準備編→RaspberryPi側の準備→環境設定をする
  4. /opt/qt/C:\Qt\qt6-rpi の内容をコピー

以上で、概ね動きます。
QtCreator からのデプロイには公開鍵含むリモートデバイスの設定が必要なのでそこだけ気をつけましょう。

X Window アプリを作れるようにしたい

Raspberry Pi 関連の記事を検索すると X Window 上で動くアプリを作る需要もそこそこありそうです。
その場合、以下のように手順を変更します。

  1. 準備編
    1. RaspberryPi側の準備
      1. sysroot を作る RPi OS を Lite ではなく Desktop で行う
        1. apt install で導入するパッケージは同じ1
      2. 環境設定で追加する環境変数を変更
        $ echo "export LD_LIBRARY_PATH=/opt/qt/lib" >> ${HOME}/.profile
        $ echo "export QT_QPA_PLATFORM=xcb" >> ${HOME}/.profile
        $ echo "export DISPLAY=:0" >> ${HOME}/.profile
        
      3. pkg-config が必須なので導入
  2. ビルド&実行編
    1. Qt のビルド
      1. 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
      

この修正手順で作成した Qt6 には X 対応が追加になります。
追加なので EGLFS 向けの開発も同じように可能です。

32bit のクロス環境を作りたい

手順はおそらく違いません。

  • クロスコンパイラ・ツールチェインを 32bit のものに変更する
  • sysroot を 32bit の RPiOS で作る
    • 64bitのものを流用しない。全く別物です
  • MinGW32 の環境でビルド等を行う

ぐらいでできると思います。

未確認、32bit使わないので・・・

まだできていないこと

最後にここまでの手順でできていないこと、改善したいことについて

  • qmake からビルドできない
    • qmlproject の実行も対応したいです
  • 作成したライブラリに rpath が効いていない
    • LD_LIBRARY_PATH の設定をなしにしたいです
  • Windows 側で symlink をなんとかしたい

改善ができたら随時記事を修正していきたいです。

(以上)

  1. 実はLiteで作ったsysrootにXWindow向け開発に必要なパッケージは全て含まれています。すでにLiteで作成済みでしたらそのまま使い回せます。

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
What you can do with signing up
0