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

C++ Discussion :

Erreurs de compilation avec MinGW GCC 4.4


Sujet :

C++

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 34
    Points : 67
    Points
    67
    Par défaut Erreurs de compilation avec MinGW GCC 4.4
    Bonjour,
    J'ai installé récemment la dernière version stable de MinGW GCC : la 4.4. J'ai plusieurs fois testé ce compilateur pour compiler des toutes petites applications (limité à une fonction main) sans problème. J'ai même pu utiliser la librairie Boost dans une petite application sans le moindre soucis. Par contre lorsque j'ai voulu compiler un HelloWorld utilisant Qt 4.5.2 j'obtiens les erreurs suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    c:\Qt\qt\lib/libqtmaind.a(qtmain_win.o): In function `WinMain':
    C:/qt-greenhouse/Trolltech/Code_less_create_more/Trolltech/Code_less_create_more/Troll/4.5.0/qt/src/winmain/qtmain_win.cpp:91: undefined reference to `__gxx_personality_sj0'
    C:/qt-greenhouse/Trolltech/Code_less_create_more/Trolltech/Code_less_create_more/Troll/4.5.0/qt/src/winmain/qtmain_win.cpp:91: undefined reference to `_Unwind_SjLj_Register'
    C:/qt-greenhouse/Trolltech/Code_less_create_more/Trolltech/Code_less_create_more/Troll/4.5.0/qt/src/winmain/qtmain_win.cpp:140: undefined reference to `_Unwind_SjLj_Resume'
    C:/qt-greenhouse/Trolltech/Code_less_create_more/Trolltech/Code_less_create_more/Troll/4.5.0/qt/src/winmain/qtmain_win.cpp:140: undefined reference to `_Unwind_SjLj_Unregister'
    collect2: ld a retourné 1 code d'état d'exécution
    mingw32-make[1]: *** [debug\t4.exe] Error 1
    mingw32-make: *** [debug] Error 2
    Exited with code 2.
    Error while building project t4
    When executing build step 'Make'
    Ces erreurs ne se produisent pas lorsque j'utilise la version de MinGW incluse dans Qt (celle qui comprend gcc 3.4.5).
    Cette erreur me semble bizarre dans la mesure où le répertoire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    C:/qt-greenhouse/Trolltech/Code_less_create_more/Trolltech/Code_less_create_more/Troll/4.5.0/qt/src/winmain/
    n'existe pas sur mon disque dur, j'ai installé Qt dans le répertoire C:/Qt avec l'installeur et je ne l'ai jamais déplacé. J'ai pu constater ces problèmes en utilisant les EDI suivants : Qt Creator 1.2.1 et Netbeans 6.7.1 .

    Ma question est la suivante : comment faire pour compiler une application utilisant Qt 4.5.2 avec gcc 4.4 sous windows ?

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    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 618
    Points : 188 591
    Points
    188 591
    Par défaut
    Salut,

    Ce problème vient d'un problème de l'installateur de Qt. En fait, les chemins vers les librairies sont codés en dur dans les librairies, et un patch est lancé à la fin de l'installation pour les adapter à la machine.

    Certaines versions de l'installateur sont buggées, d'autres fois elles ne veulent pas appliquer le patch : la seule solution est de désinstaller Qt, télécharger la nouvelle version de l'installateur et l'utiliser.
    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 !

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 34
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par dourouc05 Voir le message
    Salut,

    Ce problème vient d'un problème de l'installateur de Qt. En fait, les chemins vers les librairies sont codés en dur dans les librairies, et un patch est lancé à la fin de l'installation pour les adapter à la machine.

    Certaines versions de l'installateur sont buggées, d'autres fois elles ne veulent pas appliquer le patch : la seule solution est de désinstaller Qt, télécharger la nouvelle version de l'installateur et l'utiliser.
    Mais pourquoi le problème ne se produit pas avec GCC 3.4.5 ? Je me dit que si gcc 3.4.5 arrive à contourner le problème, gcc 4.4 doit aussi pouvoir y arriver.
    Sinon effectivement dans librairies de debug, j'ai pu voir les chemins codés en dur.

    L'erreur se produit aussi quand je suis en release :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    c:\Qt\qt\lib/libqtmain.a(qtmain_win.o):qtmain_win.cpp:(.text+0x2b): undefined reference to `__gxx_personality_sj0'
    c:\Qt\qt\lib/libqtmain.a(qtmain_win.o):qtmain_win.cpp:(.text+0x3e): undefined reference to `_Unwind_SjLj_Register'
    c:\Qt\qt\lib/libqtmain.a(qtmain_win.o):qtmain_win.cpp:(.text+0x267): undefined reference to `_Unwind_SjLj_Unregister'
    c:\Qt\qt\lib/libqtmain.a(qtmain_win.o):qtmain_win.cpp:(.text+0x30f): undefined reference to `_Unwind_SjLj_Resume'
    Sauf que là, il ne fait pas référence aux répertoires existant.

  4. #4
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2007
    Messages : 373
    Points : 764
    Points
    764
    Par défaut
    J'ai eu ce problème en voulant linker une application compilée avec GCC 4.4 avec des .dll compilées avec une ancienne version.
    Apparemment, ça serait le système de gestion des exceptions qui aurait changé entre temps, du coup les binaires ne sont pas compatibles.

    La seule solution que j'ai trouvé, c'est de recompiler toutes les dépendances (y compris les lib' statiques) avec GCC 4.4. Il y a peut être plus simple, mais en tout cas ça a fonctionné.

  5. #5
    screetch
    Invité(e)
    Par défaut
    Qt a ete compilé avec gcc 4.2 qui a ce setting : exceptions type SJLJ (c'est un "modèle" pour les exceptions)
    voila ce que dit gcc 4.4 :

    "- Zero cost exceptions: New exception model Dwarf only has performance
    penalty when being thrown. The old model, SJLJ, is no longer
    available."

    comme SJLJ a été retiré, les exceptions causent des erreurs de link


    Les chemins qui n'existent pas, c'est les chemins de la machine sur laquelle QT a ete compilé, pas la machine sur laquelle toi tu compile

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 2
    Points : 2
    Points
    2
    Par défaut J'ai fini par trouver
    J'ai eu ce problème qui m'a gonflé pendant des heures. Quand vous installez QtCreator il inclut une version de MinGW qu'il faut absolument utiliser. Il faut l'indiquer dans les options, mais aussi bien vérifier que le PATH pointe sur ce répertoire et pas un autre MinGW. Ce qui enduit d'erreur, c'est que lorsqu'on installe Qt 4.7 il installe un MinGW dans C:/MinGW, qui lui ne marche pas sous QtCreator.

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/10/2013, 21h29
  2. erreur de compilation avec mingW
    Par Mephista dans le forum Débuter
    Réponses: 8
    Dernier message: 21/09/2011, 23h04
  3. erreur de compilation avec gcc
    Par boudjema.m dans le forum C
    Réponses: 1
    Dernier message: 15/04/2010, 16h02
  4. Erreur de compilation avec gcc
    Par KINGINFO dans le forum Débuter
    Réponses: 6
    Dernier message: 08/01/2009, 15h52
  5. Erreur de compilation avec GCC
    Par Neuromancien2 dans le forum C
    Réponses: 7
    Dernier message: 20/08/2007, 09h54

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