[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 -
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.
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.
A voir également:
- [QT] application statique
- Nommez une application d'appel vidéo ou de visioconférence - Guide
- Desinstaller application windows - Guide
- Application word et excel gratuit - Guide
- Windows application démarrage - Guide
- Comment supprimer une application préinstallée sur android - Guide
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 ;-)
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 ;-)
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
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
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.
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.
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 ?
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 ?