Existe-t-il un moyen de compiler des programmes Qt5, écrits avec c ++, vers Ubuntu Touch?

9

Je crée un programme avec Qt5 et C ++, et je voudrais compiler mon programme pour Ubuntu Touch Preview ou Ubuntu desktop arm.

J'exécute ces systèmes sur Nexus 7. J'ai trouvé le bon compilateur C ++ ( arm-linux-gnueabihf-g++), mais comment faire fonctionner Qt5?

Johannes
la source
Si la réponse de @David Planella a résolu votre problème, vous devez le marquer comme "accepté".
fouric

Réponses:

11

La manière simple

Vous pouvez utiliser une fonctionnalité expérimentale du SDK Alpha d'Ubuntu. La beauté de celui-ci est que vous n'avez pas besoin de faire de compilation croisée.

Connectez-vous d'abord à votre appareil:

  1. Branchez votre appareil sur le port USB de votre ordinateur
  2. Démarrez Qt Creator
  3. Cliquez sur l'onglet appareils
  4. Cliquez sur le bouton Activer pour activer le mode développeur
  5. Allez dans Outils> Ubuntu> Périphérique> Activer> Compilation Cpp sur un périphérique Ubuntu (expérimental)

Ensuite, commencez à pirater:

  1. Ouvrez le projet de votre application dans Qt Creator
  2. Allez dans Build> Ubuntu> Build C ++ project on Ubuntu device (experimental)

Création de projets C ++ Touch sur l'appareil

Et c'est parti! :-)

Si vous aimez un défi

Vous pouvez éventuellement compiler les applications sur l'appareil à la main. Vous pouvez essayer les étapes suivantes (non testées):

  1. Connectez-vous à votre appareil en exécutant Ubuntu Touch Developer Preview
  2. Installez les packages de développement requis. Selon ce dont vous avez besoin, vous devrez peut-être ajouter des packages à la liste, mais voici un premier plan:

    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. Construisez votre application C ++ avec votre système de build de choix (cmake, qmake, etc ...)

David Planella
la source
Merci beaucoup de votre réponse! Je vais essayer cela avec le SDK Ubuntu. Heureusement, le Nexus 7 est un appareil à pleine puissance, j'ai testé la deuxième façon et cela fonctionne aussi bien.
Johannes
Heureusement, le Nexus 7 est un appareil à pleine puissance, j'ai testé la deuxième façon avec le bras de bureau Ubuntu et cela fonctionne bien, mais Ubuntu Touch Developer Preview ne trouve pas ces packages de développement.
Johannes
David: J'essaie de le faire mais j'obtiens "Impossible de localiser le paquet" pour chaque élément demandé. Je travaille dans un Pandaboard avec Ubuntu 12.40. Pouvez-vous m'aider?
HMarioD
3

Il y a une autre suggestion (troisième voie, mais difficile):
1. obtenir la chaîne d' outils linaro pour armhf
2. obtenir libhybris et platform-api (de phablet-team sur launchpad.net )
3. obtenir des bibliothèques dynamiques à partir de l'appareil ( / lib / arm- linux-gnueabihf et / usr / lib / arm-linux-gnueabihf / )
4. patch mkspecs pour qmake
5. compiler
6. ajouter le fichier <your_app> .desktop à / usr / share / applications /
7. ajouter des lignes à / usr / partager / qml-phone-shell / Applications / applications.js (peut être facultatif, je pense)
8. pousser votre application et vos ressources
9. redémarrez le shell ou le téléphone
10. Votre application a fonctionné! (J'ai testé ça!)

user135193
la source
1

Instruction étendue fondée sur la réponse précédente. Gardez à l'esprit: cette instruction décrit le développement Qt / Qml sur PC pour Ubuntu Touch sans connexion ssh avec le périphérique et nécessite un outil de compilation croisée comme linaro.

PARTIE 1: créer un environnement

  1. Obtenez le SDK Ubuntu
  2. Obtenir la chaîne d'outils: Linaro ou wia sudo apt-get install gcc-arm-linux-gnueabihf installe la chaîne d'outils et ses dépendances.
  3. Obtenez ces deux bibliothèques libhybris et platform-api ainsi que les bibliothèques Qt5 pour armhf (peuvent être obtenues à partir de l'appareil) ou téléchargez simplement tarball avec toutes les bibliothèques (à partir de tarball, vous avez besoin des bibliothèques et des en-têtes, placez-les dans / usr / arm-gnueabihf / lib et / usr / arm-gnueabihf / include ).
  4. Obtenez la configuration modifiée de qmake - ne le faites pas dans mkspecs (par exemple, le mien dans / usr / share / qt5 / mkspecs / ). Dans le répertoire non redirigé - qmake.conf . Si quelque chose manque lors de la compilation - il faut modifier la variable de chemin dans ce fichier.
  5. Pour Qt Creator, créez un nouveau profil de compilation: dans les paramètres de compilation et de déploiement , dans l'onglet Compilateur - ajoutez un nouveau compilateur ( arm-linux-gnueabihf-gcc ), dans l'onglet Outils - ajoutez un nouveau profil et spécifiez le type de périphérique - Général linux-device, Compilateur - ceux, que vous êtes ajouté Profil Qt - générique (j'utilise non recompilé Qt !!!), Qt mkspec - linux-arm-gnueabihf-gcc. C'est tout ce dont vous avez besoin pour la compilation. Pour le débogage - il faut spécifier d'autres paramètres. Et à côté, c'est mieux de recompiler Qt à partir des sources. Mais je suis paresseux donc)

PARTIE 2: déployer l'application

  1. Application et ressources push Wia adb push / data / ubuntu / <some_path> push. Le système d'exploitation peut les trouver dans / <some_path> . Remarque, il n'y a pas de partie / data / ubuntu . Cette partie n'est nécessaire que par adb .
  2. Ensuite, vous devez créer le fichier <app_name> .desktop :
    • racine adb
    • adb shell
    • ubuntu_chroot shell - basculer vers bash sur le périphérique
    • cd / usr / share / applications - allez dans le dossier avec les fichiers * .desktop
    • Copiez l'un d'entre eux et modifiez-le (avec vi ) en fonction de votre application (nom, icône, chemin, etc.)
  3. Étape suivante, identique à la précédente (vous êtes déjà en bash sur l'appareil):
    éditez le fichier (avec vi ) /usr/share/qml-phone-shell/Applications/applications.js , ajoutez une partie pour votre application dans le fichier, comme les autres applications avoir dans ce fichier. Il doit être identique à celui du fichier <app_name> .desktop
  4. Redémarrez le shell (en tuant le processus qml-phone-shell ) ou redémarrez le téléphone ( reboot -p )
  5. Vous pouvez maintenant lancer votre application depuis la page des applications !

Exemple de test et matériel original: instruction EN et instruction RU avec des liens pour la chaîne d'outils de téléchargement et les bibliothèques essentielles.

Dmitry Zagnoyko
la source
Bienvenue sur Ask Ubuntu! Bien que cela puisse théoriquement répondre à la question, il serait préférable d'inclure ici les parties essentielles de la réponse et de fournir le lien de référence.
RolandiXor