Gibt es eine Möglichkeit, mit c ++ geschriebene Qt5-Programme nach Ubuntu Touch zu kompilieren?

9

Ich erstelle ein Programm mit Qt5 und C ++ und möchte mein Programm für Ubuntu Touch Preview oder Ubuntu Desktop Arm kompilieren.

Ich verwende diese Systeme unter Nexus 7. Ich habe den richtigen C ++ - Compiler ( arm-linux-gnueabihf-g++) gefunden, aber wie kann ich Qt5 zum Laufen bringen?

Johannes
quelle
Wenn die Antwort von @David Planella Ihr Problem gelöst hat, sollten Sie es als "akzeptiert" markieren.
Fouric

Antworten:

11

Der einfache Weg

Sie können eine experimentelle Funktion des Ubuntu SDK Alpha verwenden. Das Schöne daran ist, dass Sie nicht überkompilieren müssen.

Stellen Sie zuerst eine Verbindung zu Ihrem Gerät her:

  1. Schließen Sie Ihr Gerät an den USB-Anschluss Ihres Computers an
  2. Starten Sie Qt Creator
  3. Klicken Sie auf die Registerkarte Geräte
  4. Klicken Sie auf die Schaltfläche Aktivieren, um den Entwicklermodus zu aktivieren
  5. Gehen Sie zu Extras> Ubuntu> Gerät> Aktivieren> Cpp-Kompilierung auf Ubuntu-Gerät (experimentell)

Dann fang an zu hacken:

  1. Öffnen Sie das Projekt Ihrer App in Qt Creator
  2. Gehen Sie zu Build> Ubuntu> Build C ++ - Projekt auf Ubuntu-Gerät (experimentell)

Erstellen von C ++ Touch-Projekten auf dem Gerät

Und los geht's! :-)

Wenn Sie eine Herausforderung mögen

Möglicherweise können Sie die Apps auf dem Gerät von Hand kompilieren. Möglicherweise möchten Sie die folgenden (nicht getesteten) Schritte ausführen:

  1. SSH auf Ihrem Gerät mit der Ubuntu Touch Developer Preview
  2. Installieren Sie die erforderlichen Entwicklungspakete. Je nachdem, was Sie benötigen, müssen Sie möglicherweise Pakete zur Liste hinzufügen. Hier ist jedoch ein erster Schritt:

    sudo apt-get install qt5-default qtbase5-dev libqt5v8-5-dev qtdeclarative5-dev libqt5xmlpatterns5-dev qtscript5-dev qttools5-dev qt3d5-dev qtmultimedia5-dev libqt5svg5-dev qtdeclarative5-dev-tools qttools5-dev-tools qtlocation5-dev qtsensors5-dev qtpim5-dev qt-components-ubuntu

  3. Erstellen Sie Ihre C ++ - App mit dem Build-System Ihrer Wahl (cmake, qmake usw.)

David Planella
quelle
Vielen Dank für Ihre Antwort! Ich werde das mit Ubuntu SDK versuchen. Glücklicherweise ist Nexus 7 ein Gerät mit voller Leistung, ich habe den zweiten Weg getestet und es funktioniert auch gut.
Johannes
Glücklicherweise ist Nexus 7 ein Gerät mit voller Leistung. Ich habe den zweiten Weg mit dem Ubuntu-Desktop-Arm getestet und es funktioniert gut, aber Ubuntu Touch Developer Preview findet diese Entwicklungspakete nicht.
Johannes
David: Ich versuche das zu tun, aber ich erhalte für jedes angeforderte Element die Meldung "Paket kann nicht gefunden werden". Ich arbeite in einem Pandaboard mit Ubuntu 12.40. Können Sie mir helfen?
HMarioD
3

Es gibt noch einen weiteren Vorschlag (dritter Weg, aber schwierig):
1. Holen Sie sich die Linaro-Toolchain für armhf.
2. Holen Sie sich libhybris und platform-api (vom Phablet-Team auf launchpad.net ).
3. Holen Sie sich dynamische Bibliotheken vom Gerät ( / lib / arm-). linux-gnueabihf und / usr / lib / arm-linux-gnueabihf / )
4. patchen Sie mkspecs für qmake
5. kompilieren Sie
6. fügen Sie die <des-app> -Desktop- Datei zu / usr / share / applications / hinzu.
7. fügen Sie Zeilen zu / usr / hinzu share / qml-phone-shell / Applications / applications.js (kann optional sein, denke ich)
8. Schieben Sie Ihre App und Ressourcen
9. Shell oder Telefon neu starten
10. Ihre App funktioniert! (Ich habe das getestet!)

user135193
quelle
1

Erweiterte Anweisung basierend auf vorheriger Antwort. Beachten Sie: Diese Anleitung beschreibt die Entwicklung von Qt / Qml auf einem PC für Ubuntu Touch ohne SSH- Verbindung mit dem Gerät und erfordert ein Cross-Compile-Tool wie Linaro.

TEIL 1: Umwelt schaffen

  1. Holen Sie sich das Ubuntu SDK
  2. Toolchain abrufen : Linaro oder wia sudo apt-get installieren gcc-arm-linux-gnueabihf Installieren Sie die Toolchain und ihre Abhängigkeiten.
  3. Holen Sie sich diese beiden libs libhybris und platform-api plus Qt5 libs für armhf (kann vom Gerät bezogen werden) oder laden Sie einfach tarball mit allen libs herunter (von tarball benötigen Sie libs und Header, legen Sie sie unter / usr / arm-gnueabihf / lib und / ab usr / arm-gnueabihf / include ).
  4. Holen Sie sich die geänderte qmake-Konfiguration - entpacken Sie sie in mkspecs (z. B. meine unter / usr / share / qt5 / mkspecs / ). Im nicht freigegebenen Verzeichnis - qmake.conf . Wenn beim Kompilieren etwas übersehen wurde, muss die Pfadvariable in dieser Datei geändert werden.
  5. Für Qt Creator machen Neukompilierung Profil: in Kompilieren und Deployment - Einstellungen auf der Registerkarte Compiler - fügen Sie neue Compiler ( Arm-linux-gnueabihf-gcc ) auf der Registerkarte Werkzeuge - neues Profil hinzufügen , und geben Sie Gerätetyp - Allgemeine Linux-Gerät, Compiler - diejenigen, denen Sie hinzugefügt wurden Profil Qt - generisch (ich verwende nicht neu kompiliertes Qt !!!), Qt mkspec - linux-arm-gnueabihf-gcc. Es ist alles was Sie zum Kompilieren brauchen. Zum Debuggen müssen andere Parameter angegeben werden. Und daneben ist es besser, Qt aus Quellen neu zu kompilieren. Aber ich bin so faul)

TEIL 2: App bereitstellen

  1. Wia adb push / data / ubuntu / <some_path> Push-App und Ressourcen. Das Betriebssystem kann sie unter / <some_path> finden . Beachten Sie, dass es keinen / data / ubuntu- Teil gibt. Dieser Teil wird nur von adb benötigt .
  2. Als nächstes müssen Sie <app_name> .desktop- Datei erstellen:
    • adb root
    • ADB Shell
    • ubuntu_chroot-Shell - Wechseln Sie zu Bash on Device
    • cd / usr / share / applications - Gehen Sie in einen Ordner mit * .desktop-Dateien
    • Kopieren Sie eine davon und bearbeiten Sie sie (mit vi ) für Ihren App-Zweck (Name, Symbol, Pfad usw.).
  3. Der nächste Schritt, die gleiche wie vorherige (Sie bereits in bash bei device):
    bearbeiten Datei (mit vi ) /usr/share/qml-phone-shell/Applications/applications.js , add Teil für Ihre Anwendung in der Datei, genauso wie andere Anwendungen in dieser Datei haben. Es muss mit der Datei <app_name> .desktop identisch sein
  4. Starten Sie die Shell neu (indem Sie den qml-phone-shell- Prozess beenden ) oder starten Sie das Telefon neu ( starten Sie -p neu ).
  5. Jetzt können Sie Ihre App von der Apps- Seite aus starten !

Testbeispiel und Originalmaterialien: EN-Anweisung und RU-Anweisung mit Links zum Herunterladen der Toolchain und der wesentlichen Bibliotheken.

Dmitry Zagnoyko
quelle
Willkommen bei Ask Ubuntu! Während dies theoretisch die Frage beantworten kann, wäre es vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen.
RolandiXor