[QT] application statique

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.
--
Salutation ! (il faut bien que vous compreniez que j'ai TOUJOURS raison)
Char Snipeur
Configuration: AMD Atlhon XP 2400+
1Go DDRAM 2700
CM : ABIT AN7
Radeon Asus 9600SE
OS : win XP pack1; Mandrake 10.0

4 réponses

  • Votes
  • Date
  • Date décroissante
  1. 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 ;-)
    1. Contributeur
      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
      1. 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.
    2. Contributeur
      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.
      1. Contributeur
        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 ?