Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1706 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [Debian] HelloWorld en Qt qui ne compile pas...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Debian] HelloWorld en Qt qui ne compile pas...

n°281159
eL_Shaman_​__
Plop.
Posté le 21-06-2003 à 02:44:07  profilanswer
 

C'est le premier tutoriel sur le site de Trolltech et je n'arive même pas à le compiler sur ma Debian SID :sweat:
http://doc.trolltech.com/3.1/tutorial1-01.html
 
 
Le code:

Code :
  1. /****************************************************************
  2. **
  3. ** Qt tutorial 1
  4. **
  5. ****************************************************************/
  6. #include <qapplication.h>
  7. #include <qpushbutton.h>
  8. int main( int argc, char **argv )
  9. {
  10.     QApplication a( argc, argv );
  11.     QPushButton hello( "Hello world!", 0 );
  12.     hello.resize( 100, 30 );
  13.     a.setMainWidget( &hello );
  14.     hello.show();
  15.     return a.exec();
  16. }


 
 
Je l'ai enregistré dans le fichier main.cpp.
Pour le compiler, je fais:


qmake -project
qmake
make


 
Et c'est le drame, j'obtiens celà au make:


g++ -c -pipe -Wall -W -O2  -DQT_NO_DEBUG -I/usr/share/qt3/mkspecs/default -I. -I. -I/include -o main.o main.cpp
main.cpp:7:26: qapplication.h : Aucun fichier ou répertoire de ce type
main.cpp:8:25: qpushbutton.h : Aucun fichier ou répertoire de ce type
main.cpp: Dans function « int main(int, char**) »:
main.cpp:13: error: `QApplication' undeclared (first use this function)
main.cpp:13: error: (Each undeclared identifier is reported only once for each
   function it appears in.)
main.cpp:13: error: erreur d'analyse syntaxique before `(' token
main.cpp:15: error: `QPushButton' undeclared (first use this function)
main.cpp:16: error: `hello' undeclared (first use this function)
main.cpp:18: error: `a' undeclared (first use this function)
main.cpp:12: attention : unused parameter `int argc'
main.cpp:12: attention : unused parameter `char**argv'
make: *** [main.o] Erreur 1


 
 
Alors, j'ai essayé d'écrire cela pour les include:

Code :
  1. #include <qt3/qapplication.h>
  2. #include <qt3/qpushbutton.h>


puisque les headers de Qt sont dans /usr/include/qt3/.
 
Après avoir refait les qmake comme avant, j'obtiens au make ceci:


g++ -c -pipe -Wall -W -O2  -DQT_NO_DEBUG -I/usr/share/qt3/mkspecs/default -I. -I. -I/include -o main.o main.cpp
Dans le fichier inclus à partir de /usr/include/qt3/qobjectdefs.h:42,
          à partir de /usr/include/qt3/qwindowdefs.h:43,
          à partir de /usr/include/qt3/qwidget.h:42,
          à partir de /usr/include/qt3/qdesktopwidget.h:40,
          à partir de /usr/include/qt3/qapplication.h:42,
          à partir de main.cpp:7:
/usr/include/qt3/qglobal.h:710:21: qconfig.h : Aucun fichier ou répertoire de ce type
/usr/include/qt3/qglobal.h:773:23: qfeatures.h : Aucun fichier ou répertoire de ce type
make: *** [main.o] Erreur 1


 
J'ai été voir, et j'ai bien qconfig.h et qfeatures.h (ainsi que les autres) dans /usr/include/qt3/ donc ils sont là !
 
 
C'est balot de s'arrêter à la première étape d'un tutoriel  :(
Je ne connaitrais jamais Qt  :/


Message édité par eL_Shaman___ le 21-06-2003 à 02:46:14
mood
Publicité
Posté le 21-06-2003 à 02:44:07  profilanswer
 

n°281165
kadreg
profil: Utilisateur
Posté le 21-06-2003 à 08:47:16  profilanswer
 

Avant de compiler, tape :  
 
export QTDIR=/usr/share/qt/
export QMAKESPEC=linux-g++


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°281277
eL_Shaman_​__
Plop.
Posté le 21-06-2003 à 14:42:13  profilanswer
 


export QTDIR=/usr/share/qt/
export QMAKESPEC=linux-g++
qmake -project
qmake
make
make: *** Pas de règle pour fabriquer la cible « /usr/share/qt/3/mkspecs/linux-g++/qmake.conf », nécessaire pour « Makefile ». Arrêt.


 
Ça ne fonctionne pas  :/
 
Mais j'ai vu que j'avais un dossier /usr/share/qt3/ avec tous le fichier cité ci-dessus.
 
Alors autre tentative:


export QTDIR=/usr/share/qt3/
export QMAKESPEC=linux-g++
qmake -project
qmake
make
g++ -c -pipe -Wall -W -O2  -DQT_NO_DEBUG -I/usr/share/qt3//mkspecs/linux-g++ -I. -I. -I/usr/share/qt3//include -o main.o main.cpp
g++  -o HelloWorld main.o   -L/usr/share/qt3//lib -L/usr/X11R6/lib -lqt -lXext -lX11 -lm
/usr/bin/ld: ne peut trouver -lqt
collect2: ld a retourné 1 code d'état d'exécution
make: *** [HelloWorld] Erreur 1


 
 
Ronjudju ! :fou:

n°281350
lionz
Posté le 21-06-2003 à 18:52:22  profilanswer
 

ou est le rapport avec debian ?  :heink:

n°281353
eL_Shaman_​__
Plop.
Posté le 21-06-2003 à 19:03:22  profilanswer
 

Lionz a écrit :

ou est le rapport avec debian ?  :heink:  


 
Que c'est sur Debian ?
 
Qu'à priori, ça pourrait fonctionner sur autre chose qu'une Debian puisque je suis la méthode...
 
 
 
Si tu sais d'où vient le problème, tu expliques, sinon...

n°281380
Elche
Posté le 21-06-2003 à 20:10:35  profilanswer
 

Le probleme c'est que le linkeur ne trouve pas les lib qt. Essaye avec -lqt-mt a la place de -lqt.
 
Par contre utiliser qmake pour un seul fichier, c'est pas tres utile.

n°281576
eL_Shaman_​__
Plop.
Posté le 22-06-2003 à 18:44:35  profilanswer
 

Elche a écrit :

Le probleme c'est que le linkeur ne trouve pas les lib qt. Essaye avec -lqt-mt a la place de -lqt.
 
Par contre utiliser qmake pour un seul fichier, c'est pas tres utile.


 
 
En effet, j'ai mis cela dans le Makefile généré et j'ai fait les export avec « qt3 » avant et ça a compilé parfaitement.
 
Pour cela, je suis content :)
 
 
Mais, ce n'est pas normal que qmake ne génère pas un Makefile correct.
De plus, j'ai essayé de faire une appli bidon dans Kdevelop qui affiche juste un cadre et ce que j'ai obtenu à la compilation dans Kdevelop, c'est que tous les headers de Qt étaient absents  :/
 
J'en reviens donc à me demander si les paquets Debian n'ont pas un problème, si certaines variables ne sont pas initialisées, si les fichiers sont mal placés ou je ne sais quoi encore.


Message édité par eL_Shaman___ le 22-06-2003 à 18:45:07
n°281593
eL_Shaman_​__
Plop.
Posté le 22-06-2003 à 19:48:48  profilanswer
 

J'ai finalement trouvé un moyen en lisant ce rapport de bug:
http://bugs.debian.org/cgi-bin/bug [...] bug=180326
 
 
 
Juste après avoir exécuté « qmake -project », il faut modifier le fichier *.pro en y ajoutant la ligne:
 
CONFIG += thread
 
 
Ensuite, le qmake et le make fonctionne.
 
D'après ce que j'ai compris, il existe deux types de bibliothèques pour Qt3: threadées et non threadées.
 
J'utilise celles qui sont threadées (« -mt » dans le nom de leur paquet), donc je dois ajouter ce paramètre car par défaut, sur Debian, celles utilisées sont non threadées.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [Debian] HelloWorld en Qt qui ne compile pas...

 

Sujets relatifs
[Debian] Accès à connection web avec Windows qui ne fonctionne pas.[debian] Problème partimage
[debian]erreur kernel lors de l'install[debian]c'est koi ces unmet dependencies?
pb avec la langue de gdm et le front end de nmap(nmap sous debian sidSouci Accés CD sous Debian 3.0rc1 aprés Compilation
[Debian]Questions diversesinstallation de debian sur portable, deja 2 problemes
Problème de cache disque avec Debianquestion mise a jour debian?
Plus de sujets relatifs à : [Debian] HelloWorld en Qt qui ne compile pas...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR