QT en Static Linking

QT en Static Linking - C++ - Programmation

Marsh Posté le 05-12-2005 à 16:05:57    

Salut,
voilà je bosse sous UNIX (Debian) avec QT4 et je désire compiler mes sources en 'static libraries' pour pouvoir faire tourner mon appli sur d'autres PC Debian sans que soit installé QT.
Je suis donc allé sur cette page : http://doc.trolltech.com/qq/qq11-unix-deployment.html
où il me disent de faire ceci :
 
    cd $QTDIR
    ./configure -static <other parameters>
    make sub-src
 
puis
 
    cd $QTDIR/src
    make staticlib
     
à ce stade je devrais avoir un fichier libqt.a ou libqt-mt.a
 
Mais je me demande ceci :
- quel est le $QTDIR?
- faut il faire cette manip lorsque j'installe QT pour la 1ere fois (i.e. ./configure -static au lieu de ./configure, make staticlib au lieu de static)?
 
Si quelqu'un a déjà été confronté à ce problème où connais ça, merci de me répondre ;)

Reply

Marsh Posté le 05-12-2005 à 16:05:57   

Reply

Marsh Posté le 07-12-2005 à 19:21:56    

Salut,
 
$QTDIR, c'est une variable d'environnement qui doit pointer vers le répertoire Qt (pas les includes ou les libs, la racine)
La lib que tu créeras de cette façon, seras utilisable pour tous les binaires que tu distribueras à cette plateforme. Cette plateforme étant la config du pc, les libs dispo...

Reply

Marsh Posté le 08-12-2005 à 10:41:22    

ok je vois ce qu'est mon QTDIR, je donc fais ceci :  
    cd $QTDIR  
    ./configure -static <other parameters>  
    make sub-src
 
mais je ne vois pas les fichiers libqt.a ou libqt-mt.a
 
et quand j'essaye de faire ça :  
    cd $QTDIR/src  
    make staticlib  
 
j'ai un message du type : aucune règle pour fabriquer la cible...
 
!!
 

Reply

Marsh Posté le 08-12-2005 à 13:44:59    

Pourquoi tu fais 'make sub-src' au lieu de 'make' tout court??

Reply

Marsh Posté le 08-12-2005 à 14:08:18    

Ben c'est ce qu'ils me disent de faire sur la page http://doc.trolltech.com/qq/qq11-unix-deployment.html :  
 
    make sub-src
 

Reply

Marsh Posté le 08-12-2005 à 20:52:40    

Si je ne me trompe pas, ça s'adresse à Qt3 ;)
Tu as essayé quoi d'autre?

Reply

Marsh Posté le 08-12-2005 à 22:41:38    

Justement pas grand chose,mais je cherche, ça doit bien etre prevu pour Qt4!
Alors j'essaye de faire les  
    ./configure -static <other parameters>  
et
    make sub-src  
lors de l'installation de Qt, ou après.
J'essaye de compiler mon appli en ajoutant  
    mystaticconfig {
        QMAKE_LIBS_QT =
        QMAKE_LIBS_QT_THREAD =
        LIBS += $(QTDIR)/lib/libqt.a
    }
a mon .pro
...
 
mais ça n'a pas l'air de me faire mon appli en "static", alors je cherche en vain des infos sur le net car la je bloque vraiment.

Reply

Marsh Posté le 08-12-2005 à 22:49:21    

La seule "avancée" que je note, c'est que lorsque j'installe Qt normalement, dans mon /lib, il n'y a pas de fichiers avec l'extension .a
alors que si je l'installe avec l'optio -static pour le .configure et sub-src pour la make oui.
De plus dans ce dernier cas de figure, je vois des mots "static" qui aparaissent lors de la compilation.
Mais lorsque je fait le make-install, la taille de mes 2 repertoires (/tmp/qt...... et /usr/local/Trolltech/qt...) devient très importante (3,7 Go) chacun alors je stoppe ce procédé, et actuellement j'essaye de faire mes  
    ./configure -static <other parameters>    
et  
    make sub-src  
une fois Qt installé.
 
Quant à refaire un make install.. je ne sais pas, je suis trop dans le flou. aïe!


Message édité par i'n'i le 08-12-2005 à 22:49:41
Reply

Marsh Posté le 09-12-2005 à 21:13:37    

As-tu essayé de lancer un make dans le répertoire src après le ./configure? Ca donne quoi?

Reply

Marsh Posté le 12-12-2005 à 16:50:16    

ça y est j'ai trouvé !
Trolltech l'explique sur cette page : http://doc.trolltech.com/4.1/deployment-x11.html qu'ils ont mis en ligne il n'y a pas longtemps apparement.
Je fais donc dans l'ordre :
    cd /path/to/Qt
    ./configure -static -prefix /path/to/Qt -no-xrandr -no-Xinerama
    make sub-src
 
    cd /monappli/
    make clean
    PATH=/path/to/Qt/bin:$PATH
    export PATH
    qmake -config release
    make
 
et ça marche, mon appli tourne sur des debian dépourvues de qt!
L'option "-no-Xinerama" me permet de ne plus avoir ce message d'erreur :  
/minmaxpro: error while loading shared libraries: libXinerama.so.2: cannot open shared object file: No such file or directory
 
 
Merci pour vos reponses.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed