Kampis Elektroecke

Qt für den Raspberry Pi

Raspberry Pi

Wenn man für den Raspberry Pi eine grafische Oberfläche entwickeln möchte, landet man in den allermeisten Fällen bei Lösung mit Qt. Bei Qt handelt es sich um eine universelle C++ Bibliothek zum Erstellen von grafischen Oberflächen für verschiedene Betriebssysteme, wie z. B. Windows, Linux oder Android. Leider bietet ein Raspberry Pi nicht sehr viel Rechenleistung, weshalb das Entwickeln von grafischen Oberflächen auf dem Raspberry Pi eher unschön ist. Ein deutlich eleganterer Weg wäre es, wenn das Programm auf einem Host-PC entwickelt und dann per Remoteverbindung auf den Raspberry Pi kopiert und ausgeführt wird.

Und genau das soll Thema dieser Anleitung sein. Ich werde zeigen, wie der Raspberry Pi und ein Ubuntu Host-System genutzt werden können, um auf dem Host-System Qt-Applikationen für den Raspberry Pi zu entwickeln, die dann Remote auf dem Raspberry Pi ausgeführt werden.

Den Raspberry Pi vorbereiten:

Für einen reibungslosen Ablauf muss das Betriebssystem (hier Raspbian) auf dem Raspberry Pi auf den aktuellen Stand gebracht werden.

Anschließend müssen dann noch einige Pakete installiert werden:

Und zu guter letzt wird noch ein Ordner für die Qt-Installation angelegt:

Damit ist die Konfiguration des Raspberry Pi abgeschlossen. Weiter geht es mit dem Host…

Qt für den Raspberry Pi kompilieren:

Für das Host-System habe ich ein Ubuntu 16.04 LTS in einer virtuellen Maschine genutzt. Auch hier sollten zu Beginn erst einmal die Paketquellen und die Pakete aktualisiert, sowie ein paar zusätzliche Pakete installiert werden.

Anschließend werden die Arbeitsverzeichnisse angelegt und die Rechte entsprechend konfiguriert:

Für ein einfacheres Arbeiten wird dann noch ein SSH-Schlüssel für den Raspberry Pi erstellt, wodurch lästige Passworteingaben beim Kopieren der Daten vermieden werden.

Danach können die notwendigen Daten heruntergeladen werden.

Bei den Dateien handelt es sich um den Cross-Compiler für den Raspberry Pi, die verwendete Qt Version (hier 5.10.1) und ein Python-Skript um symbolische Links von Dateien durch relative Links zu ersetzen (wird später benötigt).

Anschließend wird die Qt-Version entpackt und der Name des verwendeten Compilers (hier arm-linux-gnueabihf) in der Konfigurationsdatei von Qt angepasst.

Nun werden noch die verwendeten Bibliotheken vom Target (hier der Raspberry Pi) Pi benötigt. Diese können mittels rsync vom Raspberry Pi heruntergeladen werden.

Das Herunterladen kann mitunter ein paar Minuten dauern. Diese Dateien werden nachher für den Build-Prozess von Qt benötigt, da Qt einige Standardbibliotheken vom Zielsystem (hier der Raspberry Pi) benötigt.

Bevor die Dateien aber genutzt werden können, müssen die symbolischen Links, die noch auf das Dateisystem des Raspberry Pi zeigen, durch relative Links des neuen sysroot-Verzeichnisses ersetzt werden. Dies geschieht mit Hilfe des heruntergeladenen Python-Skripts:

Abschließend wird Qt noch konfiguriert.

Bei der Konfiguration muss über den Parameter des Arguments -device der Typ des Targets angegeben werden. Für die Parameter gilt die nachfolgende Tabelle.

Target Option
Raspberry Pi 1 (+ Zero and Zero W) linux-rasp-pi-g++
Raspberry Pi 2 linux-rasp-pi2-g++
Raspberry Pi 3 linux-rasp-pi3-g++
Raspberry Pi 3 with VC4 driver linux-rasp-pi3-vc4-g++

Sobald die Konfiguration abgeschlossen ist, kann Qt kompiliert und installiert werden.

Über den Parameter -j4 gibt man die Anzahl der verwendeten Kerne an, wodurch der Prozess beschleunigt werden kann. Mit einem Kern dauert der komplette Vorgang gute 3-4 h (je nach System). Die fertig kompilierten Qt-Bibliotheken werden abschließend noch mittels rsync auf den Raspberry Pi kopiert. 

Die Qt-Bibliotheken und der Raspberry Pi sind damit einsatzbereit. Auf dem Raspberry Pi können jetzt bereits Qt-Anwendungen erstellt, kompiliert und ausgeführt werden. Das Ziel ist es aber, dass die Anwendungen auf dem Ubuntu Host-System entwickelt werden können. Wie das geht zeige ich im nächsten Schritt.

Einrichten des Qt Creators auf dem Host-System:

Für die Entwicklung von Qt-Anwendungen eignet sich der Qt Creator am besten. Da die Installation über die offiziellen Ubuntu Paketquellen bei mir nicht funktioniert hat, wodurch der Qt Creator immer abstützt, habe ich mir den Qt-Installer direkt von der Webseite heruntergeladen und ausgeführt.


Hinweis:

Dieser Schritt installiert die kompletten Qt-Bibliotheken, etc. auf dem Host-System und nicht nur den Qt Creator. 


Nach der Installation muss der Qt Creator noch für den Raspberry Pi konfiguriert werden. Dazu wird der Creator gestartet und das Menü ExtrasEinstellungen geöffnet. Anschließend wird das Untermenü Geräte geöffnet und auf Hinzufügen… geklickt um ein neues Generisches Linux-Gerät hinzuzufügen.

Über den Button Assistent starten wird die Auswahl bestätigt und ein neues Gerät angelegt:

Über WeiterAbschließen wird die Einrichtung des neuen Gerätes abgeschlossen. Der Qt Creator testet daraufhin die Einstellungen und versucht eine Verbindung zu dem Gerät herzustellen. 

Wenn der Test erfolgreich war, kann das Fenster geschlossen werden. Das neue Gerät wird nun in der Geräteliste aufgeführt.

Danach wird das Kit, also die Sammlung aus Compiler und Buildsourcen erstellt. Über Extras wird wieder das Menü Einstellungen geöffnet und der Punkt Kits ausgewählt. In dem Reiter Compiler wird durch den Button Hinzufügen ein Eintrag für einen C- und ein C++Compiler (beide unter GCC zu finden) hinzugefügt.

Compiler Pfad
C /opt/RaspberryQt/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-gcc
C++ /opt/RaspberryQt/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-g++

Mit einem Klick auf Anwenden werden die Eingaben dann bestätigt.

Als nächstes wird die Qt Version für den Raspberry Pi angelegt. Dazu wird der Reiter Qt Versionen geöffnet und über den Button Hinzufügen wird dann ein neuer Eintrag angelegt. Es öffnet sich ein Dateibrowser, wo der Pfad des erstellen qmake-Files angegeben wird.

Die Eingabe wird mit einem Klick auf den Button Anwenden bestätigt.

Im letzten Schritt wird noch ein neuer Debugger angelegt. Dazu wird der Reiter Debugger geöffnet und über den Button Hinzufügen ein neuer Eintrag erstellt und ausgefüllt.

 Jetzt kann das Kit erstellt werden. Dazu wird der Reiter Kits geöffnet und über den Button Hinzufügen wird dann ein neues Kit angelegt. Die Maske wird nun entsprechend dem Screenshot ausgefüllt.

Auch hier wird die Eingabe mit einem Klick auf Anwenden bestätigt. Anschließend kann das Fenster über OK geschlossen werden.

Erstellen eines Testprojektes:

Jetzt, da alle Werkzeuge beisammen sind, soll auch mal ein Beispielprojekt auf dem Ubuntu Host-System entwickelt und Remote auf dem Raspberry Pi ausgeführt werden. Über DateiNeu… wird ein neues Qt-Widgets Projekt angelegt. Die einzelnen Eingaben werden mit Weiter bestätigt. Bei der Kitauswahl wird eben erstellte Raspberry Pi Kit als Kit ausgewählt.

Alle weiteren Eingaben können direkt mit Weiter bestätigt und der Assistent anschließend mit Abschließen beendet werden. Durch einen Klick auf den grünen Pfeil in der Sidebar oder mit der Tastenkombination Strg + R wird das Projekt erstellt und gestartet. Der Kompiliervorgang sollte ohne Probleme durchlaufen und die Anwendung ein paar Sekunden später auf dem Raspberry Pi gestartet werden.

Damit ist das Setup einsatzbereit und dem Entwickeln von grafischen Anwendungen auf dem PC für den Raspberry Pi steht nichts mehr im Wege.

Ich habe zwei Bash-Skripte angefertigt, die das komplette Installationsprozedre enthalten (sowohl für den Raspberry Pi als auch für das Host-System). Beide Skripte, sowie das Beispielprojekt können über mein GitLab-Repository heruntergeladen werden.

Last Updated on

24 Kommentare

  1. Funktioniert bei mir in einer virtuellen maschine mit debian9 32-bit leider nur bis zu dem Punkt, an dem Qt5 konfiguriert werden soll:
    Project ERROR: Cannot run target compiler ‘/opt/RaspberryQt/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-g++’. Output:
    ===================
    sh: 1: /opt/RaspberryQt/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-g++: not found
    ===================
    Maybe you forgot to setup the environment?

    1. Hallo Michael,

      liegt den die Raspberry Pi Toolchain an dem angegebenen Pfad?
      Das klingt nicht wie ein Problem mit dem Debian, sondern einfach nach einem falschen Pfad.

      Gruß
      Daniel

          1. Nein, nicht ausführbar! Das liegt vermutlich daran, dass ich in der virtuellen Maschine mit einem 32-bit System arbeite.
            Ich habe es nochmal auf meinem realen Ubuntu 18 mit Deinen Bash-Scripten versucht – schlug auch fehl.
            Ein neuer Versuch Schritt-für-Schritt “by hand” nach dieser Anleitung, ebenfalls auf Ubutntu 18 64-bit, brachte mich dann endlich soweit, dass Qt konfiguriert werden konnte. Compilierung läuft gerade…

          2. Mmh komisch. Der Compiler sollte doch die 32-Bit Version sein…
            Naja okay. Was gab es den für einen Fehler beim Skript? Ich hab das die Tage noch etwas modifiziert und noch 2x bei mir getestet und da lief es.

            Gruß
            Daniel

  2. Hallo,

    ich habe genau das selbe Problem unter Ubuntu 64-bit. Die Datei liegt wo sie soll, ausführen kann ich sie aber nicht.

    Project ERROR: Cannot run target compiler ‘/opt/RaspberryQt/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihfg++’. Output:
    ===================
    sh: 1: /opt/RaspberryQt/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihfg++: not found
    ===================
    Maybe you forgot to setup the environment?

    Leider habe ich keine Ahnung wie ich hier was Schritt-für-Schritt by hand durchführen kann.

    Gruß

    Markus

    1. Hallo Markus,

      ich glaube in dem Skript von mir fehlt eine Zeile…
      Kannst du mal bitte ausprobieren ob das Problem behoben wird, wenn du

      export PATH=$PATH:/opt/RaspberryQt/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin

      eingibst?

      Ggf. ist das schon der Fehler. Das “blöde” an Umgebungsvariablen ist halt, dass sie bis zum Reboot gesetzt bleiben, wenn man sie setzt. Und ich habe, während ich das Skript geschrieben habe, keinen Reboot durchgeführt :)
      Danke und Gruß
      Daniel

        1. Hallo Markus,

          also ich habe gerade eine neue Ubuntu VM aufgesetzt und mein Installationsskript verwendet:

          https://gitlab.com/Kampi/Raspberry-Pi/blob/master/Bash/CompileQt_Host.sh

          Damit wird Qt kompiliert (ob es fehlerfrei durchläuft habe ich jetzt noch nicht getestet, aber es wurde erfolgreich konfiguriert:

          Configure summary:

          Building on: linux-g++ (x86_64, CPU features: mmx sse sse2)
          Building for: devices/linux-rasp-pi3-g++ (arm CPU features: neon)

          Ggf. ist ein Fehler in der Anleitung. Diesen habe ich aber bisher nicht gefunden. Ich werde die Anleitung die Tage mal durchspielen und verifizieren. Bis dahin kannst du das Shell-Skript nutzen um Qt zu installieren.

          Gruß
          Daniel

          1. Hallo Daniel,

            Ich habe es nun geschafft!

            Mit

            nano ~/.bashrc

            die Datei .bashrc geöffnet und am Ende

            export PATH=$PATH:/opt/RaspberryQt/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

            eingefügt. Dann Qt mit:

            ../qt-everywhere-src-5.10.1/configure -opengl es2 -device linux-rasp-pi3-g++ -device-option CROSS_COMPILE=/opt/RaspberryQt/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf- -sysroot /opt/RaspberryQt/sysroot -prefix /usr/local/RaspberryQt -opensource -confirm-license -no-gbm -skip qtscript -nomake tests -nomake examples -make libs -pkg-config -no-use-gold-linker -v

            konfiguriert. Ich habe also gcc-linaro-arm-linux-gnueabihf-raspbian-x64 genutzt.

            Ich hatte noch weitere Probleme. Und zwar hiermit:

            rsync -avz pi@$:/usr/lib sysroot/usr

            Ich hatte folgende Fehlermeldung:

            Fehler: rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1668) [generator=3.1.2]

            Erst nachdem ich root Rechte auf dem RasbPi eingerichtet habe und mit:

            rsync -avz root@raspberrypi:/usr/lib sysroot/usr

            die Dateien kopiert habe wurden alle kopiert.

            Jetzt läuft alles wie es soll. Ich danke Dir vielmals für das Einstellen des Tutorials und deinen Einsatz nachdem es bei mir erstmal nicht funktioniert hat. Weiter so!

            Gruß

            Markus

          2. Hallo Markus,

            danke für das Feedback. Ich werde das anpassen und korrigieren :)

            Edit: Ich sehe gerade, dass das im Installationsskript bereits geändert ist. In der Anleitung wurde nur an dieser einen Stelle nicht die x64 Version des Compilers verwendet. Doofer Fehler, aber ich habe es korrigiert. Dank dir für deine Mühe und das Feedback. Dann muss ich es heute nicht mehr ausprobieren und den Fehler suchen :)

            Ein kleiner Hinweis noch…
            Das Export benötigst du nicht, wenn du den kompletten Pfad zum Compiler angibst. Du kannst entweder einen relativen Pfad angeben und die PATH-Variable benutzen oder den kompletten ohne PATH.

            Gruß
            Daniel

  3. Hallo Daniel,

    Danke dir für das Tutorial. Ich versuche mich gerade deine Methode für Qt Cross-Compiling in BananaPi zu benutzen.
    Bis zu ./configure funktioniert alles super, aber bei der Befehl make bekomme ich immer noch Probleme wie:

    .obj/qopengl.o:qopengl.cpp:function QOpenGLConfig::gpuFeatures(QOpenGLConfig::Gpu const&, QJsonDocument const&): Fehler: undefined reference to ‘QSysInfo::kernelVersion()’
    .obj/qopengl.o:qopengl.cpp:function QOpenGLConfig::gpuFeatures(QOpenGLConfig::Gpu const&, QJsonDocument const&): Fehler: undefined reference to ‘QVersionNumber::fromString(QString const&, int*)’
    .obj/qopengl.o:qopengl.cpp:function QOpenGLConfig::gpuFeatures(QOpenGLConfig::Gpu const&, QString const&): Fehler: undefined reference to ‘QSysInfo::kernelVersion()’
    .obj/qopengl.o:qopengl.cpp:function QOpenGLConfig::gpuFeatures(QOpenGLConfig::Gpu const&, QString const&): Fehler: undefined reference to ‘QVersionNumber::fromString(QString const&, int*)’
    collect2: Fehler: ld gab 1 als Ende-Status zurück
    make[2]: *** [Makefile:1127: ../../lib/libQt5Gui.so.5.6.4] Fehler 1
    make[2]: Verzeichnis „/opt/raspi/qtbase/src/gui“ wird verlassen
    make[1]: *** [Makefile:499: sub-gui-make_first] Fehler 2
    make[1]: Verzeichnis „/opt/raspi/qtbase/src“ wird verlassen
    make: *** [Makefile:47: sub-src-make_first] Fehler 2

    Irgendwie wird für viele Befehle von der Qt selbst keine Referenz gefunden werden.

    Ich habe erstmal gedacht, dass der Toolchain von BananaPi ist unterschiedlich als für RPi und deswegen läuft das Make-Befehl schief, aber von den Fehlermeldungen sieht es aus, dass das Problem liegt bei dem Qt. Ich habe auch schon versuchen die Libraries in Host-PC zu aktualisieren und neue Abhängigkeiten zu installieren, funktionieren aber immer noch nicht. Hast du vielleicht Idee was schief gelaufen hat bei den?

    Ich benutze gerade Qt version 5.6.0 und Raspbian Jessie.

    Gruß
    Widi

      1. Hallo Daniel,

        danke für den Hinweis, ich habe mit Qt Version 5.3.2 nochmal probiert, und funktioniert jetzt den make-Befehl.

        Zum Kompilieren in Banana Pi wird aber eine Fehlermeldung
        * failed to open vchiq device

        angezeigt.

        Kann es vielleicht wegen falsche Compiler liegen?

        Gruß
        Widi

        1. Hallo Widi,

          bitte entschuldige die späte Antwort, aber ich hatte dich komplett vergessen…
          Hast du das Problem mittlerweile gelöst?
          Ansonsten schau mal ob du ein “dev/vchiq” hast.

          Gruß
          Daniel

  4. Hallo Daniel,

    Sorry auch für die sehr späte Antwort. Das Problem wird noch nicht gelöst, weil das “dev/chiq/” ist ein spezifischer Treiber für RasPi, BananaPi ist nicht kompatibel mit diesem Treiber. Aber ich kompiliere das Qt momentan direkt in BananaPi, und funktioniert super, die Kompilierung läuft nur langsam.

    Danke für deine Hilfe :)

    Gruß,
    Widi

  5. Hallo Kampi,

    erst einmal vielen Dank für deine Anleitung! Sie ist sehr ausführlich.

    Zunächst würde ich mich selbst als blutigen Anfänger bezeichnen, weshalb vielleicht mein Problem recht simpel ist, ich aber auch nach längerem Googlen nicht weiter bin… Ich versuche gerade den Cross-Compile zwischen einem Raspberry Pi 3 mit Raspbian in der Version vom July 2019 und einer Virtuellen Maschine mit Ubuntu 19.04 einzurichten.
    Hierbei ist mir zunächst aufgefallen, dass QT 5.10.1 nicht mehr unter dem in der Beschreibung angegebenen Link zu finden ist. Der aktuelle wäre vermutlich:
    https://download.qt.io/archive/qt/5.10/5.10.1/single/qt-everywhere-src-5.10.1.tar.xz
    Des Weiteren musste ich im Raspberry Pi SSH config den Root Zugriff erlauben. (evtl. ist das aber auch nur in meinem speziellen Fall nötig)

    Als ich nun Qt konfigurieren wollte habe ich den unten stehenden Fehler bekommen. Was will mir das sagen?

    Vielen Dank schonmal für deine Hilfe.

    /opt/RaspberryQt/qt-everywhere-src-5.10.1/qtbase/src/corelib/io/qfilesystemengine_unix.cpp:101:12: error: ‘int renameat2(int, const char*, int, const char*, unsigned int)’ was declared ‘extern’ and later ‘static’ [-fpermissive]
    static int renameat2(int oldfd, const char *oldpath, int newfd, const char *newpath, unsigned flags)
    ^~~~~~~~~
    In file included from /usr/include/c++/8/cstdio:42,
    from /usr/include/c++/8/ext/string_conversions.h:43,
    from /usr/include/c++/8/bits/basic_string.h:6400,
    from /usr/include/c++/8/string:52,
    from /opt/RaspberryQt/qt-everywhere-src-5.10.1/qtbase/include/QtCore/../../src/corelib/tools/qbytearray.h:52,
    from /opt/RaspberryQt/qt-everywhere-src-5.10.1/qtbase/include/QtCore/qbytearray.h:1,
    from /opt/RaspberryQt/qt-everywhere-src-5.10.1/qtbase/include/QtCore/../../src/corelib/tools/qstring.h:49,
    from /opt/RaspberryQt/qt-everywhere-src-5.10.1/qtbase/include/QtCore/qstring.h:1,
    from /opt/RaspberryQt/qt-everywhere-src-5.10.1/qtbase/include/QtCore/../../src/corelib/io/qiodevice.h:50,
    from /opt/RaspberryQt/qt-everywhere-src-5.10.1/qtbase/include/QtCore/qiodevice.h:1,
    from /opt/RaspberryQt/qt-everywhere-src-5.10.1/qtbase/include/QtCore/../../src/corelib/io/qfiledevice.h:43,
    from /opt/RaspberryQt/qt-everywhere-src-5.10.1/qtbase/include/QtCore/qfiledevice.h:1,
    from /opt/RaspberryQt/qt-everywhere-src-5.10.1/qtbase/src/corelib/io/qfile.h:44,
    from /opt/RaspberryQt/qt-everywhere-src-5.10.1/qtbase/src/corelib/io/qfilesystemengine_p.h:54,
    from /opt/RaspberryQt/qt-everywhere-src-5.10.1/qtbase/src/corelib/io/qfilesystemengine_unix.cpp:43:
    /usr/include/stdio.h:164:12: note: previous declaration of ‘int renameat2(int, const char*, int, const char*, unsigned int)’
    extern int renameat2 (int __oldfd, const char *__old, int __newfd,
    ^~~~~~~~~
    In file included from /opt/RaspberryQt/qt-everywhere-src-5.10.1/qtbase/src/corelib/io/qfilesystemengine_unix.cpp:106:
    /usr/include/linux/stat.h:56:8: error: redefinition of ‘struct statx_timestamp’
    struct statx_timestamp {
    ^~~~~~~~~~~~~~~
    In file included from /usr/include/x86_64-linux-gnu/sys/stat.h:446,
    from /opt/RaspberryQt/qt-everywhere-src-5.10.1/qtbase/mkspecs/linux-g++/qplatformdefs.h:75,
    from /opt/RaspberryQt/qt-everywhere-src-5.10.1/qtbase/src/corelib/io/qfilesystemengine_unix.cpp:42:
    /usr/include/x86_64-linux-gnu/bits/statx.h:25:8: note: previous definition of ‘struct statx_timestamp’
    struct statx_timestamp
    ^~~~~~~~~~~~~~~
    In file included from /opt/RaspberryQt/qt-everywhere-src-5.10.1/qtbase/src/corelib/io/qfilesystemengine_unix.cpp:106:
    /usr/include/linux/stat.h:99:8: error: redefinition of ‘struct statx’
    struct statx {
    ^~~~~
    In file included from /usr/include/x86_64-linux-gnu/sys/stat.h:446,
    from /opt/RaspberryQt/qt-everywhere-src-5.10.1/qtbase/mkspecs/linux-g++/qplatformdefs.h:75,
    from /opt/RaspberryQt/qt-everywhere-src-5.10.1/qtbase/src/corelib/io/qfilesystemengine_unix.cpp:42:
    /usr/include/x86_64-linux-gnu/bits/statx.h:36:8: note: previous definition of ‘struct statx’
    struct statx
    ^~~~~
    /opt/RaspberryQt/qt-everywhere-src-5.10.1/qtbase/src/corelib/io/qfilesystemengine_unix.cpp:107:12: error: ‘int statx(int, const char*, int, unsigned int, statx*)’ was declared ‘extern’ and later ‘static’ [-fpermissive]
    static int statx(int dirfd, const char *pathname, int flag, unsigned mask, struct statx *statxbuf)
    ^~~~~
    In file included from /usr/include/x86_64-linux-gnu/sys/stat.h:446,
    from /opt/RaspberryQt/qt-everywhere-src-5.10.1/qtbase/mkspecs/linux-g++/qplatformdefs.h:75,
    from /opt/RaspberryQt/qt-everywhere-src-5.10.1/qtbase/src/corelib/io/qfilesystemengine_unix.cpp:42:
    /usr/include/x86_64-linux-gnu/bits/statx.h:87:5: note: previous declaration of ‘int statx(int, const char*, int, unsigned int, statx*)’
    int statx (int __dirfd, const char *__restrict __path, int __flags,
    ^~~~~
    make: *** [Makefile:429: qfilesystemengine_unix.o] Fehler 1

    1. Hallo Pascal,

      ja, der Link ist nicht mehr gültig, da die Version wohl mitlerweile ins Archiv verschoben wurde. Dein aktueller Link ist korrekt. Auch das du SSH für den root-Zugriff konfigurieren musst ist normal. Der Benutzername ist per Default im SSH deaktiviert. Kannst du mal die komplette Ausgabe (also auch die Eingabe des “configure” Befehls) in eine Textdatei kopieren und mir die zukommen lassen?

      Gruß
      Daniel

  6. Hallo Kampis,
    zunächst mal herzlichen Dank für dieses Tutorial. Es ist sehr ausführlich und übersichtlich.
    Ich habe es am Wochenende nochmal ausprobiert. Ich wollte ein simples Widget erstellen.
    Leider mußte ich feststellen, dass das Qt-Release 5.10.1 nicht mehr im aktuellen Qt-Creator verfügbar ist. Ich habe daher Qt 5.12.3 genommen.
    Da bekomme ich beim Ausführen des Programmes folgende Fehlermeldungen:

    qt.qpa.plugin: Could not find the Qt platform plugin “eglfs” in “”
    This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
    Available platform plugins are: linuxfb, minimal, offscreen, vnc, webgl, xcb.

    ich habe diese Konfiguration:
    Ubuntu: Distributor ID: Ubuntu
    Description: Ubuntu 18.04.3 LTS
    Release: 18.04
    Codename: bionic
    Raspberry : PRETTY_NAME=”Raspbian GNU/Linux 9 (stretch)”
    NAME=”Raspbian GNU/Linux”
    VERSION_ID=”9″
    VERSION=”9 (stretch)”
    ID=raspbian
    ID_LIKE=debian
    Linux RPI3 4.19.75-v7+ #1271 SMP Mon Sep 30 13:49:02 BST 2019 armv7l GNU/Linux

    Woran mag das wohl liegen?
    Log-Files und Scripts mit den Installationsschritten kann ich gerne zur Verfügung stellen.
    Vielen Dank für eine Antwort im Voraus.
    Kurt

      1. Hallo Daniel,
        vielen Dank für Deine Antwort.
        Ich habe nochmal ein Script geschrieben in dem Ich alle Installationsschritte nochmals ausführe.
        Das hat ausgezeichnet geklappt.
        Jetzt habe ich aber ein Problem:
        1. Ich erstelle ein ganz normales widget mit 2 Buttons.
        2. Diese aktiviere ich in mainwindow.ui
        —> Linksklick auf Element |—> Slot anzeigen |—> QAbstrackButton |—> clicked()
        3. Dann gebe ich in mainwindow.cpp and der Stelle z.B qDebug() >> “123”; ein.
        4. Wenn ich jetzt das Programm ausführe, dann bekomme ich zwar das Widget am Display angezeigt aber das Programm reagiert nicht aufs anklicken.
        Ich vermute, dass das LCD-Display nich richtig erkannt wird.
        Es ist ein 3,5″ LCD mit HDMI Schnittstelle. Die Eingabe am Touchscreen wird aber über die I/O pins verarbeitet:
        Interface
        PIN NO. SYMBOL DESCRIPTION
        1, 17 3.3V Power positive (3.3V power input)
        2, 4 5V Power positive (5V power input)
        3, 5, 7, 8, 10, 11, 12, 13, 15, 16, 18, 24 NC NC
        6, 9, 14, 20, 25 GND Ground
        19 TP_SI SPI data input of Touch Panel
        21 TP_SO SPI data output of Touch Panel
        22 TP_IRQ Touch Panel interrupt, low level while the Touch Panel detects touching
        23 TP_SCK SPI clock of Touch Panel
        26 TP_CS Touch Panel chip selection, low active
        was muß ich da wohl einstellen damit der Touchscreen auch funktioniert?
        Wäre schön wenn da einer eine Tipp hätte.

        1. Hallo,
          ich habe gerade noch gesehen, dass im Ausgabe der Anwendung diese Meldung steht:
          Unable to query physical screen size, defaulting to 100 dpi.
          To override, set QT_QPA_EGLFS_PHYSICAL_WIDTH and QT_QPA_EGLFS_PHYSICAL_HEIGHT (in millimeters).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.