Qt 6.8でアプリケーションのバイナリサイズ縮小 - 第2部 - Coffee Machine

 

Qtアプリケーションのパフォーマンスと効率性を向上させたいとお考えですか? そのためのソリューションをご用意しています。 Qt 6.8のQt Configureオプションは、そのためのものです。

Qtフレームワークの機能やモジュールを選択的に有効化または無効化できる機能により、開発者はより小さなパッケージでアプリケーションを提供でき、RAMとROMのフットプリントを削減し、より高速な起動時間を実現できます。

このブログ記事では、Raspberry Pi 4ターゲットデバイス用のQt Configureオプションのクロスコンパイルの手順を説明します。 ここで説明する手順に従うことで、アプリケーションを特定のニーズに合わせてカスタマイズし、Qt Configureオプションのメリットを直接体験することができます。

Raspberry Pi 4用のQt Configureオプションとクロスコンパイル

クロスコンパイルの事例として、Raspberry Pi 4 ターゲットデバイス用の Qt Configureオプションについて考えてみましょう。

1.まず、ターゲットデバイスに必要なツールチェーンを提供する Qt クロスコンパイル SDK をダウンロードします。 詳細については、Boot2Qt Raspberry Pi ページをご覧ください。 さらに、同じ方法で、対応するバージョンのホスト SDK とそのソースコードをしてください。

2.カスタマイズされた機能構成を含む qtlite_coffeemachine.txt ファイルと、ビルドターゲットのコンパイルとリンカーパラメータを定義する toolchain_rpi4.cmake ファイルをダウンロードしてください。

3.必要なモジュールと機能を使用して Qt を設定します。この例では、Coffee Machine のサンプルをコンパイルおよび実行できるようにする機能セットを利用します。

cd $HOME/Qt/6.8.0/Src
./configure -qt-host-path $HOME/Qt/6.8.0/gcc_64 -extprefix $HOME/Qt/my_rpi4_sdk -release -optimize-size -static -ltcg -reduce-exports -gc-binaries $(cat $HOME/qtlite_coffeemachine.txt) -- -DCMAKE_TOOLCHAIN_FILE=$HOME/toolchain_rpi4.cmake

 

4.最後に、SDKを$HOME/Qt/my_rpi4_sdkにビルドしてインストールします。

cmake --build . --parallel
cmake --install .

 

より詳しい説明については、Raspberry Pi 4 wikiページおよびその他のリンクやドキュメントを参照してください。

Coffee Machineサンプルのビルド

カスタマイズしたSDKをQt Creatorにインポートし、ようこそページからcoffee machineのサンプルを開きます。次に、バイナリのサイズをさらに最適化するために、以下のCMakeコマンドをメインのCMakeLists.txtに組み込みます。

set_target_properties(
        coffeemachine
    PROPERTIES
        QT_QMLCACHEGEN_ARGUMENTS "--only-bytecode"
)

 

最後のステップでは、すべてのテキスト記号を削除します。

aarch64-linux-gnu-strip -s coffeemachine

 

最終的には、ユーザーはRAMとROMの使用量の減少、および起動時間の短縮に気づくでしょう。

結果の観察

比較のために、標準のQt 6.8.0 Beta 4リリースを利用しました。動的ライブラリの結果は修正されていないバイナリを使用して取得し、静的ライブラリは次のconfigureコマンドで生成しました。

./configure -qt-host-path $HOME/Qt/6.8.0/gcc_64 -extprefix $HOME/Qt/6.8.0_static -release -static -skip qtapplicationmanager -qpa eglfs -- -DCMAKE_TOOLCHAIN_FILE=$HOME/toolchain_rpi4.cmake

 

最適化された結果は、前章で説明したように、Qtフレームワークとアプリケーションのビルドプロセスの両方を変更することで達成されました。さらに、最適化されたアプリケーションからすべてのデバッグ情報が削除してあります。

ROMのメモリ使用量

RAMのメモリ使用量

アプリケーション起動時間

微調整

開発者は、QML EffectsやQML Controls Fusionスタイルなどの機能を排除することで、バイナリのサイズをさらに削減することができます。Effectsを削除すると、eglfsの代わりにlinuxfbバックエンドを利用できるようになり、バイナリのサイズがさらに30%削減されます。

まとめ

Qt 6.8のConfigureオプションは、開発者がアプリケーションをパフォーマンスと効率性に合わせて最適化するためのツールを提供し、要件に正確に適合することを保証します。Qtフレームワーク内の機能とコンポーネントを切り替えることで、開発者はROM使用量を最大77%削減し、RAM消費を32%削減し、起動を大幅に高速化する、より効率的なアプリケーションを作成できます。

この記事では、バイナリサイズと関連リソース消費の具体的な削減を達成するために、Qt Configureオプションを活用する方法を概説しました。さらに、グラフィックアセットとアプリケーションコード自体を最適化することで、リソース消費の改善につながります。ただし、このブログ記事で提示する測定値については、それらの要素を調整していません。アプリケーションの最適化を求める場合、Qt バイナリの構成は利用可能なオプションの 1 つです。

Raspberry Pi 4用のconfigureオプションでQtをクロスコンパイルすることは、必要なツールチェーンと構成ファイルにより、より簡単になります。Qt configureオプションの利点と、プロジェクトへの統合方法について詳しく知りたい方は、リンクとドキュメントを参照してください。


Blog Topics:

Comments