Qt für QNX erstellen

QNX SDP einrichten

Die Erstellung von Qt 6 erfordert das Herunterladen und Installieren von QNX SDP 7.1 von der QNX Website.

Hinweis: Eine geeignete Lizenz ist erforderlich. Kontaktieren Sie QNX für weitere Informationen.

Der Compiler und andere Teile der Toolchain sind in den SDP-Paketen enthalten. Initialisieren Sie Ihre Build-Umgebung, indem Sie das QNX-Setup-Skript aus Ihrem SDP-Installationsordner in einem Terminal wie folgt ausführen:

source qnxsdp-env.sh

Oder führen Sie qnxsdp-env.bat in der Windows Kommando-Shell aus.

Host-Build

Ein Host-Build von Qt muss verfügbar sein, um Qt crosskompilieren zu können. Der Grund dafür ist, dass während des Builds bestimmte Werkzeuge (wie moc, rcc, qmlcachegen und qsb) vom Host-Build aufgerufen werden. Sie haben zwei Möglichkeiten:

  • Qt-Quellen für den Hostbauen oder
  • Installation des Host-Builds mit Qt Online Installer.

Es ist jedoch ratsam, sicherzustellen, dass Sie Qt für das Desktop-Target auch auf dem Host bauen können, da die gleichen Werkzeuge auch beim Kompilieren für QNX benötigt werden.

Erstellen einer Toolchain-Datei für QNX

Um ein Projekt mit CMake crosskompilieren zu können, benötigen Sie eine Toolchain-Datei. Diese CMake-Sprachdatei setzt die richtigen Werte für den Plattformnamen, den Compiler/Linker und viele andere toolchain-spezifische Dinge. Als Referenz finden Sie die in CI verwendeten Toolchain-Dateien im Quellpaket coin/provisioning/common/shared/cmake_toolchain_files

set(CMAKE_SYSTEM_NAME QNX)
set(CMAKE_SYSTEM_PROCESSOR armle-v7)
set(arch gcc_ntoarmv7le)

set(CMAKE_C_COMPILER qcc)
set(CMAKE_C_COMPILER_TARGET ${arch})
set(CMAKE_CXX_COMPILER q++)
set(CMAKE_CXX_COMPILER_TARGET ${arch})

set(CMAKE_FIND_ROOT_PATH $ENV{QNX_TARGET};$ENV{QNX_TARGET}/${CMAKE_SYSTEM_PROCESSOR})

set(CMAKE_SYSROOT $ENV{QNX_TARGET})

Die Beispieldatei ist für armv7le. Die anderen Möglichkeiten sind aarch64le und x86_64, abhängig von Ihrer Zielarchitektur.

Hinweis: Cmake übergibt die Variablen STRIP, AR, RANLIB und NM auf QNX nicht korrekt, so dass sie, falls verwendet, separat in einer Toolchain-Datei angegeben werden müssen.

Konfigurieren und Erstellen von Qt für QNX

Um Qt für QNX zu konfigurieren und zu bauen, benötigen Sie folgendes:

  • Die Werkzeuge zur Erstellung von Qt, wie in Erstellen von Qt-Quellen beschrieben, sind vorhanden und funktionieren für Ihre Host-Plattform.
  • Die Toolchain-Datei, $HOME/qnx.cmake.
  • Den ausgecheckten oder installierten Qt-Quellcode unter $HOME/qt.
  • Ein Host-Build von Qt befindet sich unter $HOME/qt-host.
  • Der Installationsort auf dem lokalen System ist auf $HOME/qnx-install festgelegt.

Nachdem Sie das Verzeichnis build erstellt und dorthin gewechselt haben, führen Sie Folgendes aus:

$HOME/qt/configure -nomake examples -nomake tests \
-qt-host-path $HOME/qt_host \
-extprefix qnx_install \
-prefix /qt \
-- -DCMAKE_TOOLCHAIN_FILE=$HOME/qnx.cmake  \
$HOME/qt

Seit Qt 6 ist das configure-Tool ein Wrapper um CMake und in der Praxis ist dieser configure-Befehl äquivalent zum folgenden direkten CMake-Aufruf:

cmake -GNinja -DQT_BUILD_EXAMPLES=OFF -DQT_BUILD_TESTS=OFF \
-DQT_HOST_PATH=$HOME/qt_host \
-DCMAKE_STAGING_PREFIX=$HOME/qnx_install \
-DCMAKE_INSTALL_PREFIX=/qt \
-DCMAKE_TOOLCHAIN_FILE=$HOME/qnx.cmake  \
$HOME/qt

Hinweis: Beim Bauen unter Windows muß PCH (Precompiled Headers) explizit deaktiviert werden, da die Aktivierung den QNX-Compiler zum Absturz bringt. Um PCH zu deaktivieren, verwenden Sie die Konfigurationsoption -no-pch.

Hinweis: Wenn Sie QNX SDP 8.0 verwenden, überspringen Sie nicht unterstützte und von ihnen abhängige Module mit der Konfigurationsoption -skip qtmultimedia -skip qtspeech -skip qtremoteobjects -skip qtinterfaceframework.

Sobald die Konfiguration ohne Fehler abgeschlossen ist, erstellen Sie Qt, indem Sie folgendes ausführen:

cmake --build . --parallel

Hinweis: Der QNX-Compiler benötigt möglicherweise mehr Speicher als der Compiler, der für die Erstellung des Hosts verwendet wird. Verwenden Sie --parallel <numOfProcesses>, um die maximale Anzahl der gleichzeitigen Prozesse während der Erstellung zu begrenzen.

Nach der Erstellung führen Sie Folgendes aus:

cmake --install .

Dies installiert die Ergebnisse auf $HOME/qnx_install. Von dort aus kann der Qt-Build mit Qt Creator, direkt mit scp oder einer anderen Methode auf dem Zielgerät bereitgestellt werden. Der Konfigurationsparameter -prefix (/qt im Beispiel) definiert den Bereitstellungsort auf dem Zielgerät.

Erstellen von Anwendungen für das Zielgerät

Wenn Sie den Qt-Build abgeschlossen haben und er am Bereitstellungsort installiert ist, können Sie Beispiele oder Anwendungen erstellen.

Verwenden Sie das mit CMake generierte Skript qt-cmake im bin-Verzeichnis des Bereitstellungsortes ($HOME/qnx_install im Beispiel), um es zu konfigurieren, und führen Sie dann ninja aus. Ein Beispiel:

$HOME/qnx_install/bin/qt-cmake .
cmake --build .

Anschließend können Sie das resultierende Anwendungsbinary auf dem Gerät bereitstellen. Die Verwendung des Hilfsskripts qt-cmake ist praktisch, da das Skript sicherstellt, dass die Toolchain-Datei, die für die Erstellung von Qt verwendet wurde, geladen wird, so dass sie nicht für jede Anwendung wiederholt angegeben werden muss.

Wenn Sie eine Qt-Installation verwenden, die nicht auf Ihrem Rechner erstellt wurde, muss qt-cmake den Speicherort der CMake-Toolchain-Datei für die Zielplattform kennen.

In einem solchen Fall weisen Sie qt-cmake an, eine benutzerdefinierte Toolchain-Datei zu laden, indem Sie die Variable QT_CHAINLOAD_TOOLCHAIN_FILE wie folgt setzen:

$HOME/qnx_install/bin/qt-cmake -DQT_CHAINLOAD_TOOLCHAIN_FILE=$HOME/qnx.cmake .

Wenn Sie Anwendungen in Qt Creator mit einer Qt-Installation erstellen, die nicht auf Ihrem Rechner erstellt wurde, muss die Variable CMAKE_TOOLCHAIN_FILE, die auf eine lokale Toolchain-Datei verweist, zur Kit-Konfiguration hinzugefügt werden(Bearbeiten > Einstellungen > Kits).

Weitere Informationen zum Verbinden und Hinzufügen von Kits für QNX-Geräte bei Verwendung von Qt Creator finden Sie unter Verbinden von QNX-Geräten.

Bibliotheken von Drittanbietern

Stellen Sie sicher, dass Ihr System-Image die folgenden zusätzlichen Bibliotheken von Drittanbietern enthält, die nicht immer in den minimalen QNX Neutrino RTOS Images enthalten sind:

  • libfontconfig
  • libfreetype
  • libiconv
  • libicui18n
  • libicudata
  • libicuuc
  • libpng16
  • libxml2
  • libsqlite3
  • libssl
  • libcrypto
  • libzstd

Anmerkung: Dies ist keine vollständige Liste der Bibliotheken, die von Qt auf QNX Neutrino OS verwendet werden. Mehrere gemeinsam genutzte Bibliotheken sind bereits in einem typischen Betriebssystem-Image vorhanden oder werden von anderen Teilen des Systems eingebunden, zum Beispiel Screen.

Siehe auch Qt Configure Options und Configuring Qt.

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