IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

Cross compilation native d'application Qt depuis Linux/Unix-like


Sujet :

Qt

  1. #1
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    août 2008
    Messages
    26 314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2008
    Messages : 26 314
    Points : 187 465
    Points
    187 465
    Par défaut Cross compilation native d'application Qt depuis Linux/Unix-like
    Un compilateur croisé (en anglais cross compiler) est un programme capable de traduire un code source en code objet ayant un environnement d'exécution (architecture matérielle, système d'exploitation) différent de celui où la compilation est effectuée. Ces compilateurs sont principalement utilisés en informatique industrielle.

    Cet article va détailler la mise en place et l'utilisation d'un environnement de compilation multiplateforme. En effet, tout le monde n'a pas Windows dans sa poche et fournir un exécutable pour une architecture autre que la sienne peut parfois être un vrai calvaire. Aussi, au travers de ce tutoriel, nous allons mettre un place un tel système en utilisant mingw32 et Qt4.

    Cross compilation native d'application Qt depuis Linux/Unix-like

    Utilisez-vous la cross compilation avec Qt ? Quel en est votre ressenti ?
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  2. #2
    Futur Membre du Club
    Inscrit en
    juillet 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : juillet 2006
    Messages : 3
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Merci et bravo pour cette gamme de mise en oeuvre de cross compilation sous Linux.

    Mon problème est que malgré la clareté des explications (et qui ne semblent pourtant pas trop complexes), je n'y arrive pas.

    A ma décharge, je suis débuttant en Qt (je développe en java depuis 10 ans, aie! aie! aie! ne me frappez plus )et je n'utilise Linux (ubuntu 10.04) que comme un end-user de base à titre perso.

    J'ai donc installé :
    - wine (opérationnel)
    - mingw32 (j'arrive à compiler puis exécuter via wine un test.exe qui ne fait rien)
    - installer qt-sdk-win-opensource-2010.05.exe (que j'arrive à exécuter avec wine)
    - créer un mkspec avec les modifications proposées (peut-on avoir le fichier complet car peut-être ai-je des valeurs différentes ou fait quelques boulettes)
    Par exemple, le make ne trouvait pas les programmes ui (qu'il allait chercher dans /usr/bin ; j'ai donc mis le chemin en dur dans le mkspec

    Lorsque je lance le qtcreator windows via wine, j'arrive bien à exécuter dans l'outils mon programme mais je ne fais de cross-compilation là.

    Bref, je suis un peu perdu :
    1. et assez étonné que QTCreator natif (celui pour ubuntu) ne me permettent pas de changer de mkspec (je n'ai pas trouvé comment faire)
    2. QTCreator ne permette pas facilement de faire du cross compil (sans passer par manip en ligne de commande).
    3. Comment renseigner la variable QT_INSTALL_BINS ? Faut il faire pointer vers l'install Linux ou win32 ?

    Pour éviter le problème de chemin vers ui &co, j'ai mis en dur le chemin vers mes binaires linux (c'est ce que j'ai compris quand j'ai lu "virer les extensions .exe"). Voici le message d'erreur finalement obtenu :
    berny@berny-acer:~/Documents/qt/test$ make
    make -f Makefile.Release
    make[1]: entrant dans le répertoire « /home/berny/Documents/qt/test »
    i586-mingw32msvc-g++ -mthreads -Wl,-enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -mwindows -Wl,-s -o release/test.exe release/main.o -L"~/.wine/drive_c/Qt/2010.05/qt/lib" -lQtGui -lQtCore
    /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/bin/ld: cannot find -lQtGui
    collect2: ld a retourné 1 code d'état d'exécution
    make[1]: *** [release/test.exe] Erreur 1
    make[1]: quittant le répertoire « /home/berny/Documents/qt/test »
    make: *** [release] Erreur 2
    J'espère avoir posté au bon endroit (sinon, je déplacerai ma question).

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    janvier 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2007
    Messages : 19
    Points : 22
    Points
    22
    Par défaut
    Il semblerait que le dossier utilisateur ne soit pas "expandé": -L"~/.wine/drive_c/Qt/2010.05/qt/lib"

    Windows ( et donc wine ) ne sait donc pas comment interpreter ce tilde.
    Copies/colles cette ligne en remplaçant le tilde par le chemin complet et ca devrait passer, verifies aussi dans ton mkspec que tu n'as pas utilisé le tilde.

Discussions similaires

  1. cross compilation d'une application avec plugins
    Par vpoulailleau dans le forum Débuter
    Réponses: 3
    Dernier message: 21/04/2010, 23h06
  2. accès à des applications windows depuis Linux
    Par floopi51 dans le forum Réseau
    Réponses: 2
    Dernier message: 14/03/2009, 16h02
  3. Portage d'une application MFC sous Linux/Unix
    Par farscape dans le forum MFC
    Réponses: 29
    Dernier message: 20/02/2006, 17h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo