QNX向けQtのランタイムターゲット要件
QNX Software Systemsは、組み込みデバイスを構築するためのソフトウェアソリューションを提供しています。これには、非常に柔軟な方法でQNX Neutrino RTOSブートイメージを作成することも含まれます。QNXはOSイメージ作成用のリファレンススクリプトをいくつか提供していますが、遅かれ早かれ変更が必要になる場合や、OSイメージをゼロから作成することにする場合もあるでしょう。 Qtは、いくつかのサードパーティ製コンポーネントおよび特定のOSサービスの存在に依存しています。このため、Qtを実行するターゲットデバイス向けのQNX Neutrino RTOSブートイメージは、Qtが期待通りに動作することを保証するために、以下のセクションに記載されている要件を満たす必要があります。
QNX スクリーングラフィックスサブシステム
Qt アプリケーションを起動するには、事前にQNX スクリーングラフィックスサブシステム(以下、「Screen」とも呼ばれる)が実行されている必要があります。Screen は、Qt によって使用されるドライバ、およびいくつかのユーティリティとサービスで構成されています。これには、マウスおよびキーボードイベントの処理も含まれます。gles2-gears などのグラフィックスアプリケーションが問題なく起動・実行できることを確認することで、Screen が正しく設定され、正常に動作していることを確認できます。
SDPに含まれる最近のサンプルOSビルドスクリプトのほとんどには、Screen用のすべてのコンポーネントと起動コマンドが記載されたセクションが含まれています。これらを参考として利用できます。
Vulkan
Vulkan レンダリングを使用する場合、ターゲットイメージは Vulkan ローダー (libvulkan.so) およびVK_QNX_screen_surface 拡張機能を実装したScreen グラフィックスドライバーを提供する必要があります。詳細については、「Vulkan レンダリング API」を参照してください。
IPv6のサポート
Qt Networkでは、実際のネットワーク通信がIPv4を使用するかIPv6を使用するかに関わらず、IPv6サポートが有効になっている必要があります。
警告: 実行されている必要があるのはio-pkt-v6-hc であり、io-pkt-v4ではありません。
ランダムデバイス/dev/random
Qt では、/dev/random が存在し、正常に動作している必要があります。Qt アプリケーションを起動する前、またはシステムの起動時にこれを起動してください:
random -p
waitfor /dev/randomシステムロガー
QNXは、組み込みシステムの特性に合わせて最適化されたslog2ロギングフレームワークを提供しています。このフレームワークの主な利点は、ファイルへのテキスト出力よりもはるかに優れたパフォーマンスを発揮することです。Qtは、QNX Neutrino RTOS上でQDebug を経由するすべてのロギング出力について、デフォルトでこのフレームワークを使用します。slog2 サービスは、システムの起動時に開始する必要があります。slog2 は、/tmp フォルダの存在にも依存しており、このフォルダについても設定を行う必要があります。例:
[type=link] /tmp=/dev/shmem
display_msg "Starting slogger2..."
slogger2 -U1001:1000 &
waitfor /dev/slog2環境変数
Qtアプリケーションを起動する際に設定すべき環境変数がいくつかあります。そのほとんどは、実際にはQNX Neutrino RTOS固有のものではありません。しかし、問題が発生した際にこれらを知っておくと時間を大幅に節約できるため、ここで言及しています。
注: POSIX環境変数(特にホスト名、日時)にアクセスするには、setconf およびgetconf が必要です。
Qt ランタイムの配置場所
RPATH環境変数を設定せずにQtをビルドした場合は、Qtランタイムコンポーネントをファイルシステム上の任意のフォルダに配置できます。Qtが<Qt-install-path> にインストールされていると仮定した場合、以下の環境変数は有効な場所を指す必要があります:
LD_LIBRARY_PATHには、<Qt-install-path>/libにある Qt ライブラリへのパスを含める必要があります。QT_PLUGIN_PATHQtプラグインの配置場所を定義します。<Qt-install-path>/pluginsに設定する必要があります。QML2_IMPORT_PATHQt Quick プラグインの保存場所を指定します。 に設定する必要があります。<Qt-install-path>/qml- Qtがfontconfigを使用しない場合は、
QT_QPA_FONTDIRでフォントへのパスを指定するか、デフォルトのフォント保存場所である<Qt-install-path>/lib/fontsにフォントを配置する必要があります。 - 利用可能な画面/ディスプレイの数と順序については、
QT_QPA_QNX_DISPLAY_CONFIGを確認してください。
物理的な画面サイズ
Qt は、DPI 値を決定し、正しいフォントサイズを設定するために、接続されたディスプレイの物理的な寸法に関する情報を必要とします。通常、この情報は Screen によって提供されます。場合によっては、0mm×0mm といった無効な画面サイズが表示されることがあります。そのような場合、Qt は必要な情報を取得するために、環境変数QQNX_PHYSICAL_SCREEN_SIZE を適切な値に設定する必要があります。 Qtアプリケーションが「物理的な画面サイズを特定できませんでした」というエラーメッセージを表示して終了する場合は、Qtアプリケーションを起動する前に、変数を次のように設定してください:
export QQNX_PHYSICAL_SCREEN_SIZE=150,100これにより、この特定のケースにおいて、画面の幅が 150mm、高さが 100mm であることを Qt に通知します。物理的な画面サイズはミリメートル (mm) で測定され、最終的な構成におけるディスプレイの実際の物理サイズと一致している必要があります。
Qtアプリケーションの初回起動時のトラブルシューティング
QNX Neutrino RTOSが提供する柔軟性の唯一の欠点は、ターゲット上の実行環境がQtが想定しているものとわずかに異なるリスクがあることです。これは、新しいターゲット上でQtアプリケーションが起動に失敗する一般的な原因です。いくつかの一般的な環境変数を設定することで、問題の根本原因を特定するのに役立ちます:
QT_DEBUG_PLUGINSを1に設定すると、QPAプラグインが読み込めない理由を特定するのに役立ちます。LD_DEBUGを1に設定すると、共有ライブラリがどこでどのように読み込まれているかを確認できます。これは、プラグインが他の共有ライブラリを読み込めなかったために読み込みに失敗した場合に、QT_DEBUG_PLUGINSと組み合わせて使用できます。QT_LOGGING_TO_CONSOLEを設定すると、すべてのログメッセージがslog2ではなくstderrに強制的に送信されます。これにより、メッセージを確認するために別のツールを使用する必要がなくなるため、アプリケーションの起動時の問題を分析する際に役立ちます。
Qt は通常、fontconfig を使用してシステムフォントへのアクセスを提供します。フォントキャッシュが事前に作成されていない場合、最初の Qt アプリケーションの起動時に作成されます。 環境設定によっては、この処理に非常に長い時間がかかり、アプリケーションの起動が大幅に遅れることがあります。必要がない場合は、configure 時に -DFEATURE_fontconfig=OFF を指定して fontconfig を無効にすることができます。
QNXプラットフォームでのQCursorの使用
QNX におけるカスタムカーソルのサポートは、デフォルトでは無効になっています。これを有効にするには、Qt アプリケーションを起動する前に、QT_QPA_QNX_CUSTOM_CURSOR 環境変数を設定してください:
export QT_QPA_QNX_CUSTOM_CURSOR=1カスタムカーソルのサポートが有効になっている場合、QNX ではウィンドウのカーソル形状を変更できますが、使用したい形状に関連付けられた画像を、画面設定ファイル `graphics.conf` を通じてデプロイし、指定する必要があります。詳細については、「ディスプレイの設定」のサブセクションにある`cursor-type` パラメータを参照してください。 QNX では、デフォルトのカーソル以外に追加のカーソルは提供されていません。したがって、追加のカーソルグラフィックは、ビットマップ形式で手動で用意する必要があります。以下の表は、Qt::CursorShape の各値に対して、graphics.conf で使用されるカーソル名を示しています。
| Qt::CursorShape 値 | QNX 画面設定名 |
|---|---|
| Qt::ArrowCursor | arrow |
| Qt::CrossCursor | cross |
| Qt::WaitCursor | wait |
| Qt::IBeamCursor | ibeam |
| Qt::PointingHandCursor | 手 |
| Qt::OpenHandCursor | つかむ |
| Qt::ClosedHandCursor | つかむ |
| Qt::DragMoveCursor | 移動 |
| その他のすべてのカーソル形状 | 矢印(デフォルト) |
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.