Qt für QNX Runtime Target Anforderungen

QNX Software Systems liefert Software-Lösungen für die Herstellung von Embedded-Geräten. Dazu gehört auch die Erstellung von QNX Neutrino RTOS Boot-Images auf sehr flexible Weise. Obwohl QNX mehrere Referenzskripte für die Erstellung von Betriebssystem-Images zur Verfügung stellt, werden Sie früher oder später Änderungen vornehmen müssen oder Sie entscheiden sich, ein Betriebssystem-Image von Grund auf neu zu erstellen. Qt verläßt sich auf das Vorhandensein verschiedener Komponenten von Drittanbietern und ausgewählter Betriebssystemdienste. Aus diesem Grund müssen QNX Neutrino RTOS Boot-Images für ein Zielgerät, auf dem Qt läuft, die in den folgenden Abschnitten aufgeführten Anforderungen erfüllen, um sicherzustellen, dass Qt wie erwartet funktioniert.

QNX Bildschirm-Grafik-Subsystem

Bevor eine Qt-Anwendung gestartet werden kann, muss das QNX Screen Graphics Subsystem (auch einfach "Screen" genannt) laufen. Screen besteht aus einem Treiber und mehreren Dienstprogrammen und Diensten, die von Qt verwendet werden. Dazu gehört auch die Verarbeitung von Maus- und Tastaturereignissen. Sie können sicherstellen, dass Screen korrekt konfiguriert ist und läuft, indem Sie überprüfen, ob eine Grafikanwendung, wie gles2-gears, gestartet werden kann und ohne Probleme läuft.

Die meisten der aktuellen Beispielskripte für die Erstellung von Betriebssystemen in der SDP enthalten Abschnitte mit allen Komponenten und Startbefehlen für den Bildschirm. Sie können diese als Referenz verwenden.

IPv6-Unterstützung

Der Netzwerkstack von Qt erfordert die Aktivierung der IPv6-Unterstützung, unabhängig davon, ob das eigentliche Netzwerk IPv4 oder IPv6 verwendet.

Achtung: io-pkt-v6-hc muss ausgeführt werden, nicht io-pkt-v4.

Zufälliges Gerät /dev/random

Qt erfordert, dass /dev/random vorhanden und funktionsfähig ist. Starten Sie es vor dem Start einer Qt-Anwendung oder während des Systemstarts:

random -p
waitfor /dev/random

System Logger

QNX stellt das slog2 Logging Framework zur Verfügung, das auf die Besonderheiten von eingebetteten Systemen zugeschnitten ist. Der Hauptvorteil dieses Frameworks ist eine viel bessere Performance als eine Textausgabe in Dateien. Qt verwendet dieses Framework standardmäßig für alle Logging-Ausgaben, die über QDebug auf QNX Neutrino RTOS laufen. Der slog2 Dienst sollte während des Systemstarts gestartet werden. slog2 ist auch auf das Vorhandensein des /tmp Ordners angewiesen, der ebenfalls konfiguriert werden muss, zum Beispiel:

[type=link] /tmp=/dev/shmem
display_msg "Starting slogger2..."
slogger2 -U1001:1000 &
waitfor /dev/slog2

Umgebungsvariablen

Es gibt eine Reihe von Umgebungsvariablen, die Sie beim Starten einer Qt-Anwendung setzen sollten. Die meisten von ihnen sind eigentlich nicht spezifisch für QNX Neutrino RTOS. Sie werden hier trotzdem erwähnt, da ihre Kenntnis im Falle von Problemen viel Zeit spart.

Hinweis: setconf und getconf werden benötigt, um auf POSIX-Umgebungsvariablen zuzugreifen, insbesondere für den Hostnamen sowie Zeit und Datum.

Qt Runtime Location

Wenn Sie Qt nicht mit gesetzter RPATH-Umgebungsvariable gebaut haben, können Sie die Qt-Laufzeitkomponenten in einem beliebigen Ordner im Dateisystem ablegen. Die folgenden Umgebungsvariablen sollten auf gültige Speicherorte verweisen, unter der Annahme, dass sich die Qt-Installation in <Qt-install-path> befindet:

  • LD_LIBRARY_PATH sollte den Pfad zu den Qt-Bibliotheken in <Qt-install-path>/lib enthalten.
  • QT_PLUGIN_PATH definiert, wo sich die Qt-Plug-ins befinden. Er sollte auf <Qt-install-path>/plugins gesetzt werden.
  • QML2_IMPORT_PATH definiert, wo sich die Qt Quick Plug-Ins befinden. Er sollte auf <Qt-install-path>/qml gesetzt werden.
  • Wenn Qt fontconfig nicht verwendet, müssen Sie entweder den Pfad zu den Schriftarten mit QT_QPA_FONTDIR angeben oder die Schriftarten unter <Qt-install-path>/lib/fonts platzieren, was der Standardspeicherort für Schriftarten ist.
  • Die Anzahl und Reihenfolge der verfügbaren Bildschirme/Displays finden Sie unter QT_QPA_QNX_DISPLAY_CONFIG.

Physikalische Bildschirmgröße

Qt benötigt Informationen über die physikalischen Abmessungen des angeschlossenen Bildschirms, um die DPI-Werte zu bestimmen und somit die korrekte Schriftgröße einzustellen. Normalerweise werden diese Informationen vom Bildschirm bereitgestellt. In einigen Fällen kann eine ungültige Bildschirmgröße wie 0mmx0mm angezeigt werden. In einem solchen Fall benötigt Qt eine Umgebungsvariable QQNX_PHYSICAL_SCREEN_SIZE, die auf entsprechende Werte gesetzt ist, um die benötigten Informationen zu erhalten. Wenn Qt-Anwendungen mit einer Fehlermeldung beendet werden, die besagt, dass die physikalische Bildschirmgröße nicht ermittelt werden konnte, setzen Sie die Variable wie folgt, bevor Sie die Qt-Anwendung starten:

export QQNX_PHYSICAL_SCREEN_SIZE=150,100

um Qt mitzuteilen, dass der Bildschirm in diesem Fall eine Breite von 150mm und eine Höhe von 100mm hat. Die physikalische Größe des Bildschirms wird in Millimetern (mm) gemessen und sollte der tatsächlichen physikalischen Größe des Displays in der endgültigen Konfiguration entsprechen.

Fehlersuche beim ersten Start einer Qt-Anwendung

Der einzige Nachteil der Flexibilität, die QNX Neutrino RTOS bietet, ist das Risiko, dass die Laufumgebung auf Ihrem Zielsystem etwas anders ist als von Qt erwartet. Dies ist ein häufiger Grund, warum eine Qt-Anwendung auf einem neuen Target nicht startet. Ein paar generische Umgebungsvariablen können helfen, die Ursache für Probleme zu finden:

  • Wenn man QT_DEBUG_PLUGINS auf 1 setzt, kann man feststellen, warum das QPA-Plugin nicht geladen werden kann.
  • Das Setzen von LD_DEBUG auf 1 hilft herauszufinden, wo und wie gemeinsam genutzte Bibliotheken geladen werden. Dies kann in Kombination mit QT_DEBUG_PLUGINS verwendet werden, wenn ein Plugin nicht geladen werden kann, weil es andere gemeinsam genutzte Bibliotheken nicht laden konnte.
  • Das Setzen von QT_LOGGING_TO_CONSOLE erzwingt das Senden aller Logging-Meldungen an stderr statt an slog2. Dies ist nützlich für die Analyse von Problemen beim Anwendungsstart, da Sie kein anderes Tool verwenden müssen, um die Meldungen zu sehen.

Qt verwendet normalerweise fontconfig, um den Zugriff auf Systemfonts zu ermöglichen. Wenn nicht schon vorher ein Font-Cache angelegt wurde, wird er beim Start der ersten Qt-Anwendung angelegt. Je nach Konfiguration kann dies sehr lange dauern und den Start von Anwendungen erheblich verzögern. Falls nicht benötigt, kann fontconfig mit -DFEATURE_fontconfig=OFF bei der Konfiguration deaktiviert werden.

© 2025 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.