[QT] application statique

Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   -  
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   -
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

loupius
 
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 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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
loupius
 
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 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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