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?

More than 1 year has passed since last update.

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で作成済みでしたらそのまま使い回せます。

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?