[QT] application statique

Fermé
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 5 mai 2009 à 12:27
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 6 mai 2009 à 11:53
Bonjour,
voilà, je voudrais compiler mon programme QT en static (plus facile à distribuer que de fournir les dll).
Seulement je n'y arrive pas...
j'ai bien les versions statiques des bibliothèques (libQtCore4.a etc.).
J'ai essayé en ajoutant CONFIG+=static dans le fichier projet, et j'ai même bidouiller le makefile pour ajouter -static à la fin de l'édition des liens, mais sans succès.
Si quelqu'un sait comment faire.
Merci.

4 réponses

Cette possibilité ne m'a jamais effleuré l'esprit...
Le seul point qui m'ait interpellé: si 'libQtCore4.a' doit être appellée en place de 'libQtCore.so.4', alors il faut peut-être modifier 'QT += core' en 'QT += core4'.
Ce n'est qu'un humble avis ;-)
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
5 mai 2009 à 14:28
Là je suis sous windows, donc, il faut appeler libQtCore4.a à la place de QtCore4.dll, ce que je ne comprends pas c'est que on lie avec -lQtCore4, mais que l'option -static à la fin est ignorée.
Voici la commande d'édition de lien
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-s -mthreads -Wl -Wl,-subsystem,windows -o release/MC_QtBuilder_3D.exe object_script.MC_QtBuilder_3D.Release  -L'd:/Qt/sources/qt-win-opensource-src-4.5.0/lib' -lopengl32 -lglu32 -lgdi32 -luser32 -lmingw32 -lqtmain -lQt3Support4 -lQtOpenGL4 -lQtGui4 -lQtCore4 -static
0
Ne faut-il pas que toutes les bibliothèques existent en statique ?
L'éditeur de liens peut-il à la fois lier des bibliothèques statiques et des bibliothèques dynamiques ?
Je pose la question mais je ne sais pas y répondre.
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
5 mai 2009 à 16:35
Toutes les bibliothèques existent en statique (c'est en effet une condition nécessaire)
L'éditeur de lien peut lier en statique et dynamique, c'est son comportement par défaut (si il n'y a pas de bibliothèque dynamique, il prend la statique). Par contre, en précisant -static il doit ignorer les bibliothèques dynamiques. Or, moi, il m'ignore les statiques.
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
6 mai 2009 à 11:53
Bon, je pense avoir saisi le problème. Les .a présent dans lib/ ne sont pas de vrais bibliothèques, en essai d'afficher le contenu avec ar, ça fait référence aux DLL. Voilà qui explique pas mal de chose.
Il faudrait donc que je recompile les sources de QT avec l'option static pour avoir de vrai bibliothèques statiques. à moins qu'il y ait plus simple en convertissant les dll ?
0