Einführung
Dies ist eine Anleitung für die Konfiguration des Qt-Creator um cross-compilierte Qt-Libraries für den Raspberry Pi 4 verwenden zu können und Anwendungen für den Raspberry zu erstellen.
Achtung
Es gibt ein Update zu diesem Artikel, das Cross-Compilation für Raspberry Pi, Qt6 und Ubuntu 22.04 LTS enthält. Folgen Sie diesem Link, wenn Sie neuere Versionen benötigen.
Voraussetzungen
Raspberry Pi OS Lite
Installieren Sie Raspberry Pi OS Lite auf einem Raspberry Pi 4 oder wie in meinem Blogpost Raspberry Pi OS auf dem Raspberry Compute Module 4 installieren beschrieben, auf einem Raspberry Compute Module 4.
Qt 5.15.2 auf Ubuntu 20 LTS
Konfigurieren Sie Raspberry Pi OS Lite auf einem Raspberry Pi 4 oder wie in meinem Blogpost Raspberry Pi OS auf dem Raspberry Compute Module 4 installieren und erstellen Sie die Qt-Libraries wie in meinem Blogpost Qt 5.15 cross compile für Raspberry Compute Module 4 auf Ubuntu 20 LTS.
Konfiguration Qt-Creator
Sie sollten einen funktionierenden Qt-Creator auf einem Ubuntu 20 installiert haben. Anleitungen dazu finden Sie bei Qt oder in den verschiedensten Foren oder Tutorials.
Außerdem sollten Sie - wie in den Voraussetzungen beschrieben - einen Raspberry Pi 4 oder ein Raspberry Compute Modul 4 mit Raspberry Pi OS Lite und den entsprechenden Qt-Libraries, einen Cross-Compiler und die cross-compilierten Libraries für den Raspberry Pi 4 erstellt haben.
Die im Anschluss für die verschiedenen Konfigurationen verwendeten Pfade entsprechen den Pfaden aus den beiden vorausgegangenen Blogposts.
Meine verwendete QtCreator-Version ist die Version 4.13.3.
Device erstellen
Im ersten Schritt legen wir ein neues Device an. Dazu im Menü unter "Tools" "Options" aufrufen und in der linken Spalte "Devices" auswählen. Dann mit "Add" ein neues Device "Generic Linux Device" erzeugen. Dem Device einen Namen vergeben - hier RaspberryPi4-Qt-5.15 -, bei "Host name" die IP-Adresse eingeben und unter "Username" für den Raspberry typischerweise "pi" eingeben.
Anschließend kann man mit dem Button "Test" die Verbindung zum Raspberry testen. Sollte hier nicht "Device test finished successfully." zurückgegeben werden, müssen Sie die Einstellungen überprüfen und testen, ob der Raspberry wirklich mit diesen Parametern erreichbar ist.
Compiler konfigurieren
Im zweiten Schritt müssen wir die Pfade für die C und C++ Compiler festlegen. Die Einstellungen dazu finden wir wieder im Menü "Tools -> Options" unter "Kits -> Compilers".
Wir verwenden hier die Compiler, die wir mit dem Cross-Compiler "gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf" heruntergeladen haben.
Mit "Add -> GCC -> C" bzw. "Add -> GCC -> C++" zwei neue Konfigurationen hinzufügen. Dazu für C im Verzeichnis "tools" "gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc" und für C++ "gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++". Jeweils einen Namenn vergeben und fertig ist diese Einstellung.
Qt-Version erstellen
Im dritten Schritt benötigen wir die cross-compilierte qmake-Datei aus dem vorherigen Blogpost. Die Einstellungen dazu finden wir wieder im Menü "Tools -> Options" unter "Kits -> Qt Versions".
Wieder mit "Add" eine neue Konfiguration hinzufügen und mit dem "Browse"-Button die qmake-Datei aus dem Verzeichnis "qt5.15/bin/qmake" auswählen.
Kit erstellen
Im letzten Schritt werden die neu hinzugefügten Konfigurationen zu einem neuen Kit zusammengefügt. Die Einstellungen dazu finden wir im Menü "Tools -> Options" unter "Kits -> Kits".
Wieder mit "Add" eine neue Konfiguration hinzufügen und bei
- Name: einen eigenen Namen vergeben (mit diesem wird später unter den "Project"-Einstellungen das Device ausgewählt)
- Device type: "Generic Linux Device"
- Device: das neu erstellte Device auswählen
- Sysroot: das im vorigen Blogpost erstellte sysroot-Verzeichnis auswählen
- Compiler: die beiden neu erstellten Compiler auswählen
- Qt-Version: die neu erstellte Qt-Version auswählen
Project-Einstellungen
Das neu erstellte Kit kann nun beim Erstellen eines neuen Projects sofort ausgewählt und zugewiesen werden oder einem bereits existierenden Project hinzugefügt werden.