Qt quer kompilieren

Diese Seite beschreibt den allgemeinen Prozess und die Anforderungen der Cross-Kompilierung von Qt.

Wenn Sie nur nach einer Möglichkeit suchen, ein Host-Qt zu erstellen, lesen Sie bitte den Abschnitt Erstellen eines Host-Builds von Qt.

Begriffe und Definitionen

Cross-Compiling bedeutet die Konfiguration und Erstellung für eine Zielplattform, die sich von der Host-Plattform unterscheidet.

Der Host ist der Computer, auf dem Sie Qt erstellen, zum Beispiel ein Linux-Rechner. Das Ziel ist das Gerät, für das Sie Qt entwickeln, z. B. ein Android-Tablet.

Bei der Erstellung von Qt werden mehrere Werkzeuge ausgeführt, die Code generieren oder andere Verarbeitungsschritte ausführen. Diese Werkzeuge laufen auf dem Host und werden daher als Host-Tools bezeichnet. Diese Host-Tools sind Teil eines Host-Builds von Qt. Dieser Host-Build muss als Voraussetzung für die Erstellung von Qt für die Zielplattform vorbereitet werden.

Ein minimaler Host-Build von Qt ist ein Host-Build von Qt, der nur die Host-Tools enthält, die zum Erstellen eines Ziel-Builds von Qt erforderlich sind.

Qt wird mit CMake erstellt, und CMake benötigt beim Cross-Compiling eine Toolchain-Datei. Diese Datei enthält Informationen über die Zielplattform und die verwendete Toolchain. Siehe die CMake-Dokumentation zur Cross-Kompilierung.

Für einige Zielplattformen wählt das Qt configure-Skript die Datei automatisch aus. Einzelheiten dazu finden Sie in der Dokumentation für die gewünschte Zielplattform.

Für einige Zielplattformen müssen Sie eine sysroot angeben. Das ist eine in sich geschlossene Umgebung, die alle notwendigen Dateien und Bibliotheken enthält, die zum Kompilieren und Linken von Anwendungen benötigt werden.

Allgemeine Hinweise zum Host-Build von Qt

Während des Builds von Qt für das Ziel werden Werkzeuge wie moc, rcc, qmlcachegen, qsb und andere von dort aus aufgerufen. Wenn man zum Beispiel für ARM auf einem x64-Rechner crosskompiliert, muss zuerst ein lokaler x64-Build der gleichen Qt-Version zur Verfügung gestellt werden. Der Pfad zu diesem Qt-Build wird an configure oder cmake übergeben. Der Host-Build von Qt ist normalerweise ein regulärer Build von Qt für Ihr Host-Gerät.

Der Host-Build von Qt muss alle notwendigen Host-Tools für die Erstellung von Qt für die Zielplattform enthalten. Wenn Ihr Ziel-Qt zum Beispiel Qt Quick unterstützen soll, muss das Host-Qt qsb, den Shader-Compiler, enthalten. Ein einfacher Weg, um sicherzustellen, dass das Host-Qt alle notwendigen Werkzeuge bereitstellt, besteht darin, die gleichen Qt-Module auf dem Host zu erstellen, die Sie auf dem Zielsystem benötigen werden.

Vermeiden Sie es, das Host-Qt statisch zu erstellen, wenn das Ziel-Qt gemeinsam erstellt wird. Ein statischer Build von Qt enthält möglicherweise nicht alle Werkzeuge, die für die Erstellung eines gemeinsam genutzten Qt erforderlich sind.

Stellen Sie sicher, dass Sie die gleiche Version von Qt für den Host und das Ziel-Qt verwenden, um Inkompatibilitätsprobleme zu vermeiden.

Erstellen des Host-Builds von Qt

Lesen Sie in der Dokumentation des gewünschten Hosts nach, wie Sie Qt für diese Plattform erstellen können.

Um ein minimales Host-Qt zu erstellen, verwenden Sie den folgenden Build-Befehl, nachdem Sie Qt konfiguriert haben:

mkdir ~/QtHostBuild
cd ~/QtHostBuild
~/QtSource/configure -developer-build -nomake tests
cmake --build . --target host_tools

Dieser Build ist nicht geeignet, um Qt-Programme für Ihre Host-Plattform zu entwickeln, aber er enthält die notwendigen Werkzeuge, um Qt cross-build zu erstellen.

Angeben des Host-Builds von Qt beim Cross-Compiling

Bei der Cross-Kompilierung müssen Sie das Ziel-Qt auf den Speicherort des Host-Qt verweisen.

Wenn Sie das configure-Skript verwenden, benutzen Sie

~/QtSource/configure -qt-host-path ~/QtHostBuild ...target-specific options...

Wenn Sie CMake direkt verwenden, verwenden Sie

cmake -S ~/QtSource -DQT_HOST_PATH=~/QtHostBuild ...target-specific options...

Siehe die Dokumentation des gewünschten Ziels für zielspezifische Optionen.

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