Armadilloフォーラム

Qtビルド/実行について

yasuda0108

2021年12月23日 16時37分

①Qtのビルド方法について

コンテナ上でリンク先ページを参考にQtのビルドを試みましたが、添付資料の通りエラーとなり、ビルドの実行に失敗しております。
ビルド可能となる方法や現状の問題点についてご教示願います。
https://armadillo.atmark-techno.com/index.php/blog/53/3913

試みた流れとしましては、以下の通りになります。
1. 製品マニュアル9-10で使用した「demo-app」コンテナを起動
 ※デモアプリ動確済み
2. USBメモリを接続し、/mntから/homeへQtソースコードをコピー
3. リンク先ページを参考にビルドを実施←失敗

② Qtクロスビルドについて
ATDE9でArmadillo-G4用にビルドし実行する方法について、
大まかな流れは下記リンク記載の内容を参考にできると思われますが、
本ボード用に対応が必要な箇所がありましたらお教え頂ければ幸いです。

https://armadillo.atmark-techno.com/howto/armadillo-440-qt-2

ファイル ファイルの説明
Qtビルドエラー.txt
コメント

入江です。

①Qtのビルド方法について

Armadillo上でビルドするのであれば、追加でパッケージが必要ですのでコン テナ内で以下のコマンドを実行してからビルドをお試しください。

[container]# apt update
[container]# apt install -y \
qtbase5-gles-dev \
libqt5quickparticles5-gles \
libqt5quick5-gles \
qtdeclarative5-dev \
qt5-qmake build-essential

ちなみに、ホストビルドで開発を行う場合は、最終的な運用向けコンテナイメー ジに開発用のパッケージが入っているとコンテナイメージサイズが大きくなる ので、開発用コンテナと実行用コンテナに分けて使用することをお勧めします。

実行用コンテナでは、上記コマンドでインストールしたパッケージのうち、末 尾に-devが付いているものとbuild-essentialが必要ないので、それ以外のパッ ケージをインストールしておけば、動作環境としては十分かと思います。

② Qtクロスビルドについて

こちらについても、追加でパッケージが必要ですので、以下のコマンドを実行してインストールします。

[ATDE]$ sudo apt update
[ATDE]$ sudo apt install -y \
qtbase5-gles-dev:arm64 \
libqt5quickparticles5-gles:arm64 \
libqt5quick5-gles:arm64 \
qtdeclarative5-dev:arm64 \
qt5-qmake:arm64 \
qtcreator

QtCreatorを起動し、画面上部の[ツール]->[オプション]を開き、[Kits]の[Qtバージョン]のタブを開きます。

以下の画像のように、qmakeのパスを変更するために[参照]をクリックします。

qmakeのパス設定

qmakeのパスは、/usr/lib/aarch64-linux-gnu/qt5/bin/qmakeに設定してください。

[OK]で設定を保存します。

さらにKitsの設定から、デスクトップ(既定)をクリックし以下の画像のように、 C、C++ともにCompilerを「GCC(C[またはC++], arm 64bit in /usr/bin)」 に変更して[OK]をクリックします。

Compilerの設定

プロジェクトのビルド時には今回設定したKitsを選択してビルドすることで、 aarch64向けのバイナリを作成できます。

ファイル ファイルの説明
change_qmake.png
change_compiler.png

ご回答ありがとうございました。
「①Qtビルド方法について」にてご教示いただいた通り、ビルド用と実行用のコンテナで動作確認し、無事動作しました。

追加で質問がございます
Qtプログラム動作確認済みの実行用コンテナのイメージを保存し、そのイメージから新たなコンテナを作成したのですが、
新たなコンテナ内でQtプログラムを実行したところ、下記のようなエラ-が発生しました。

root@5fc197e0c1ea:/home/2dpainting# export QT_QPA_PLATFORM=linuxfb
root@5fc197e0c1ea:/home/2dpainting# ./2dpainting
 
Unable to figure out framebuffer device. Specify it manually.
linuxfb: Failed to initialize screen
no screens available, assuming 24-bit color
Cannot create window: no screens available
Aborted

こちらのエラ-につきまして、対策等ご教示いただけますでしょうか。

佐藤です。

> こちらのエラ-につきまして、対策等ご教示いただけますでしょうか。
podman run でコンテナを起動する際に、 オプションとして --device=/dev/fb0 を渡してますでしょうか。
ご確認ください。