Rechercher : dans
Par :

Compilation sous Qt 4.5 avec Qt Creator

Dernière réponse le 28 aoû 2009 à 15:24:18 avion-f16, le 4 mar 2009 à 14:13:56 
 Signaler ce message aux modérateurs

Bonjour,
aujourd'hui, c'est moi qui fait appelle à vos connaissances.

Je viens d'installer la nouvelle version de Qt, la 4.5 sur Linux Ubuntu. L'installation c'est passée correctement donc je lance Qt Creator puis je crées un nouveau projet. Surprise pendant la compilation, il me renvoie une erreur (alors que c'est un code écrit automatiquement, j'ai même essayé un copier/coller d'internet).

Voici l'erreur :
:-1: error: collect2: ld a retourné 1 code d'état d'exécution

et le code que je teste :

#include <QApplication>
#include <QPushButton>


int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QWidget fenetre;
    QPushButton bouton("Pimp mon bouton !", &fenetre);
    fenetre.show();

    return app.exec();
}

Et le .pro
# -------------------------------------------------
# Project created by QtCreator 2009-03-04T13:57:00
# -------------------------------------------------
TARGET = teste
TEMPLATE = app
SOURCES += main.cpp
HEADERS += 
FORMS += 


Je vous remercie d'avance.
Si je ne suis pas complet dans mes réponses, n'hésitez pas à le dire.
Configuration: Linux Ubuntu 8.04
Qt 4.5

Meilleures réponses pour « Compilation sous Qt 4.5 avec Qt Creator » dans :
Télécharger QT SDK VoirQt SDK est une suite de logiciel complète permettant de faire des applications en C++ avec une interface graphique portable sur de multiples OS. - Designer : est un logiciel qui permet de dessiner les fenêtre graphique - Assistant : c'est le manuel...

1

Char Snipeur, le 4 mar 2009 à 14:48:03

Salut.
Il n'y a rien d'autre comme message d'erreur ? Car là c'est mince.
Le problème viens de ld : c'est à dire à 90% de l'édition des liens, et non du code source. Salutation ! (il faut bien que vous compreniez que j'ai TOUJ­OURS raison)
Char Snipeur

Répondre à Char Snipeur

2

avion-f16, le 4 mar 2009 à 14:50:56

Non je n'ai que ça comme message. Si je ne suis pas complet dans mes réponses, n'hésitez pas à­ le dire.

Répondre à avion-f16

3

loupius, le 4 mar 2009 à 15:05:12

Je n'ai pas encore utilisé QtCreator, mais dans un classique projet on trouve, dans le fichier .pro, une ligne du style: QT += core gui

Répondre à loupius

4

Char Snipeur, le 4 mar 2009 à 16:47:19

Met le makefile alors.
Là l'erreur ne dit rien, juste un problème à l'édition des liens. Il y a des chances qu'il manque un -lQTxxx ou un truc dans le genre ou qu'il y ait un conflit ou un une incompatibilité de version etc.
Sans le message complet, on ne peut pas dire grand chose. Salutation ! (il faut bien que vous compreniez que j'ai TOUJ­OURS raison)
Char Snipeur

Répondre à Char Snipeur

5

avion-f16, le 4 mar 2009 à 20:14:55

Alors voici le contenu de mon Makefile :

############################################################­#################
# Makefile for building: 1
# Generated by qmake (2.01a) (Qt 4.5.0) on: mer. mars 4 20:13:51 2009
# Project:  1.pro
# Template: app
# Command: /opt/qtsdk-2009.01/qt/bin/qmake -spec /opt/qtsdk-2009.01/qt/mkspecs/linux-g++ -unix CONFIG+=debug_and_release CONFIG+=debug -o Makefile 1.pro
############################################################­#################

first: debug
install: debug-install
uninstall: debug-uninstall
MAKEFILE      = Makefile
QMAKE         = /opt/qtsdk-2009.01/qt/bin/qmake
DEL_FILE      = rm -f
CHK_DIR_EXISTS= test -d
MKDIR         = mkdir -p
COPY          = cp -f
COPY_FILE     = $(COPY)
COPY_DIR      = $(COPY) -r
INSTALL_FILE  = install -m 644 -p
INSTALL_PROGRAM = install -m 755 -p
INSTALL_DIR   = $(COPY_DIR)
DEL_FILE      = rm -f
SYMLINK       = ln -sf
DEL_DIR       = rmdir
MOVE          = mv -f
CHK_DIR_EXISTS= test -d
MKDIR         = mkdir -p
SUBTARGETS    =  \
		debug \
		release

debug: $(MAKEFILE).Debug FORCE
	$(MAKE) -f $(MAKEFILE).Debug
debug-make_default: $(MAKEFILE).Debug FORCE
	$(MAKE) -f $(MAKEFILE).Debug 
debug-make_first: $(MAKEFILE).Debug FORCE
	$(MAKE) -f $(MAKEFILE).Debug first
debug-all: $(MAKEFILE).Debug FORCE
	$(MAKE) -f $(MAKEFILE).Debug all
debug-clean: $(MAKEFILE).Debug FORCE
	$(MAKE) -f $(MAKEFILE).Debug clean
debug-distclean: $(MAKEFILE).Debug FORCE
	$(MAKE) -f $(MAKEFILE).Debug distclean
debug-install: $(MAKEFILE).Debug FORCE
	$(MAKE) -f $(MAKEFILE).Debug install
debug-uninstall: $(MAKEFILE).Debug FORCE
	$(MAKE) -f $(MAKEFILE).Debug uninstall
release: $(MAKEFILE).Release FORCE
	$(MAKE) -f $(MAKEFILE).Release
release-make_default: $(MAKEFILE).Release FORCE
	$(MAKE) -f $(MAKEFILE).Release 
release-make_first: $(MAKEFILE).Release FORCE
	$(MAKE) -f $(MAKEFILE).Release first
release-all: $(MAKEFILE).Release FORCE
	$(MAKE) -f $(MAKEFILE).Release all
release-clean: $(MAKEFILE).Release FORCE
	$(MAKE) -f $(MAKEFILE).Release clean
release-distclean: $(MAKEFILE).Release FORCE
	$(MAKE) -f $(MAKEFILE).Release distclean
release-install: $(MAKEFILE).Release FORCE
	$(MAKE) -f $(MAKEFILE).Release install
release-uninstall: $(MAKEFILE).Release FORCE
	$(MAKE) -f $(MAKEFILE).Release uninstall

Makefile: 1.pro  /opt/qtsdk-2009.01/qt/mkspecs/linux-g++/qmake.conf /opt/qtsdk-2009.01/qt/mkspecs/common/g++.conf \
		/opt/qtsdk-2009.01/qt/mkspecs/common/unix.conf \
		/opt/qtsdk-2009.01/qt/mkspecs/common/linux.conf \
		/opt/qtsdk-2009.01/qt/mkspecs/qconfig.pri \
		/opt/qtsdk-2009.01/qt/mkspecs/features/qt_functions.prf \
		/opt/qtsdk-2009.01/qt/mkspecs/features/qt_config.prf \
		/opt/qtsdk-2009.01/qt/mkspecs/features/exclusive_builds.pr­f \
		/opt/qtsdk-2009.01/qt/mkspecs/features/default_pre.prf \
		/opt/qtsdk-2009.01/qt/mkspecs/features/debug.prf \
		/opt/qtsdk-2009.01/qt/mkspecs/features/debug_and_release.p­rf \
		/opt/qtsdk-2009.01/qt/mkspecs/features/default_post.prf \
		/opt/qtsdk-2009.01/qt/mkspecs/features/warn_on.prf \
		/opt/qtsdk-2009.01/qt/mkspecs/features/qt.prf \
		/opt/qtsdk-2009.01/qt/mkspecs/features/unix/thread.prf \
		/opt/qtsdk-2009.01/qt/mkspecs/features/moc.prf \
		/opt/qtsdk-2009.01/qt/mkspecs/features/resources.prf \
		/opt/qtsdk-2009.01/qt/mkspecs/features/uic.prf \
		/opt/qtsdk-2009.01/qt/mkspecs/features/yacc.prf \
		/opt/qtsdk-2009.01/qt/mkspecs/features/lex.prf \
		/opt/qtsdk-2009.01/qt/lib/libQtGui.prl \
		/opt/qtsdk-2009.01/qt/lib/libQtCore.prl
	$(QMAKE) -spec /opt/qtsdk-2009.01/qt/mkspecs/linux-g++ -unix CONFIG+=debug_and_release CONFIG+=debug -o Makefile 1.pro
/opt/qtsdk-2009.01/qt/mkspecs/common/g++.conf:
/opt/qtsdk-2009.01/qt/mkspecs/common/unix.conf:
/opt/qtsdk-2009.01/qt/mkspecs/common/linux.conf:
/opt/qtsdk-2009.01/qt/mkspecs/qconfig.pri:
/opt/qtsdk-2009.01/qt/mkspecs/features/qt_functions.prf:
/opt/qtsdk-2009.01/qt/mkspecs/features/qt_config.prf:
/opt/qtsdk-2009.01/qt/mkspecs/features/exclusive_builds.prf:­
/opt/qtsdk-2009.01/qt/mkspecs/features/default_pre.prf:
/opt/qtsdk-2009.01/qt/mkspecs/features/debug.prf:
/opt/qtsdk-2009.01/qt/mkspecs/features/debug_and_release.prf­:
/opt/qtsdk-2009.01/qt/mkspecs/features/default_post.prf:
/opt/qtsdk-2009.01/qt/mkspecs/features/warn_on.prf:
/opt/qtsdk-2009.01/qt/mkspecs/features/qt.prf:
/opt/qtsdk-2009.01/qt/mkspecs/features/unix/thread.prf:
/opt/qtsdk-2009.01/qt/mkspecs/features/moc.prf:
/opt/qtsdk-2009.01/qt/mkspecs/features/resources.prf:
/opt/qtsdk-2009.01/qt/mkspecs/features/uic.prf:
/opt/qtsdk-2009.01/qt/mkspecs/features/yacc.prf:
/opt/qtsdk-2009.01/qt/mkspecs/features/lex.prf:
/opt/qtsdk-2009.01/qt/lib/libQtGui.prl:
/opt/qtsdk-2009.01/qt/lib/libQtCore.prl:
qmake: qmake_all FORCE
	@$(QMAKE) -spec /opt/qtsdk-2009.01/qt/mkspecs/linux-g++ -unix CONFIG+=debug_and_release CONFIG+=debug -o Makefile 1.pro

qmake_all: FORCE

make_default: debug-make_default release-make_default FORCE
make_first: debug-make_first release-make_first FORCE
all: debug-all release-all FORCE
clean: debug-clean release-clean FORCE
distclean: debug-distclean release-distclean FORCE
	-$(DEL_FILE) Makefile

debug-mocclean: $(MAKEFILE).Debug
	$(MAKE) -f $(MAKEFILE).Debug mocclean
release-mocclean: $(MAKEFILE).Release
	$(MAKE) -f $(MAKEFILE).Release mocclean
mocclean: debug-mocclean release-mocclean

debug-mocables: $(MAKEFILE).Debug
	$(MAKE) -f $(MAKEFILE).Debug mocables
release-mocables: $(MAKEFILE).Release
	$(MAKE) -f $(MAKEFILE).Release mocables
mocables: debug-mocables release-mocables
FORCE:

$(MAKEFILE).Debug: Makefile
$(MAKEFILE).Release: Makefile

Merci à tous les deux.
Si je ne suis pas complet dans mes réponses, n'hésitez pas à­ le dire.

Répondre à avion-f16

6

Char Snipeur, le 5 mar 2009 à 08:45:21

J'ai du mal à comprendre ce makefile. Si je comprend bien, il crée un makefile.Release qui contient réellement les informations de compilation.
Mais je n'en démord pas il doit y avoir plus d'information de compilation.
C'est peu être le script de QT qui les masque. Il n'y a pas de fichier log ?
Ce que je te propose, c'est de chercher dans le répertoire des éventuelles fichier Makefile contenant les instruction de compilation, du genre :
CCPP=/bin/g++
CC=/bin/gcc
LINK=/bin/ld
CPPFLAG = -I$(QTDIR)/include ...
LDFLAG= -L($QTDIR)/lib -lqt-mt4 ...
Je te donnerai alors une commande à taper dans la console et il devrai y avoir plus d'information. Salutation ! (il faut bien que vous compreniez que j'ai TOUJ­OURS raison)
Char Snipeur

Répondre à Char Snipeur

7

avion-f16, le 7 mar 2009 à 00:03:07

Bonjour.

Désolé d'avoir fait tarder la réponse autant.

Voici un zip avec tous les fichiers après la tentative de compilation : exemple.zip Si je ne suis pas complet dans mes réponses, n'hésitez pas à­ le dire.

Répondre à avion-f16

8

loupius, le 7 mar 2009 à 12:46:33

Cet exemple ne correspond pas à l'exemple posé dans la question.
Qu'importe, l'exemple envoyé ne me pose pas de problème lors de la compilation à partir de QtCreator (que j'ai installé sans problème).
La version de Qt est Qt 4.4.3

Répondre à loupius

9

avion-f16, le 7 mar 2009 à 21:24:52

Ma version de Qt est la 4.5 (Qui est sortit depuis +/- une semaine).

Tampis je vais le désinstaller et je testerai sous Windows. Si je ne suis pas complet dans mes réponses, n'hésitez pas à­ le dire.

Répondre à avion-f16

10

loupius, le 8 mar 2009 à 02:40:11

Il doit y avoir un truc, car je ne peux concevoir qu'un programme aussi simple ne puisse être compilé avec la version 4.5.0.
Même si un telle version n'est supposée qu'imparfaite... un programme aussi basique n'a pas pu passer à travers les tests.
Je reste perplexe car je travaille depuis plusieurs années avec Qt et je ne suis jamais tombé sur un tel problème.
Dès que la version 4.5.1 sortira, il faudra réessayer.
Bon courage.

Répondre à loupius

11

Char Snipeur, le 9 mar 2009 à 08:58:36

Je ne peux pas testé, je n'ai pas la version.
Mais il est possible que ça vienne d'une mauvaise configuration de ton Linux.
la ligne du makefile en cause est :
$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)
vérifie que tu as bien les .o dans le dossier debug (ils y sont dans ce que tu as mis en lien)
tape alors dans une console, depuis le dossier du projets :

g++ -Wl,-O1 -Wl,-rpath,/opt/qtsdk-2009.01/qt/lib  -o Salut Debug/*.o -L/opt/qtsdk-2009.01/qt/lib -lQtGui -L/opt/qtsdk-2009.01/qt/lib -L/usr/X11R6/lib -pthread -lfreetype -lgobject-2.0 -lSM -lICE -pthread -pthread -lXrender -lfontconfig -lXext -lX11 -lQtCore -lm -pthread -lgthread-2.0 -lrt -lglib-2.0 -ldl -lpthread
je trouve étrange les "-pthread" j'aurai mis "-lpthread" à la place et surtout, je n'en aurai mis qu'un. Salutation ! (il faut bien que vous compreniez que j'ai TOUJOURS raison)
Char Snipeur

Répondre à Char Snipeur

12

loupius, le 9 mar 2009 à 11:56:39

Oui, il y a certainement un problème de configuration.
Moi aussi, et depuis longtemps ça m'agace, il me met plusieurs fois les même bibliothèques; je n'ai jamais compris pourquoi. Dans le cas présent, dans le fichier Makefile.debug, je n'ai que:
LIBS = $(SUBLIBS) -lQtGui -lQtCore -lpthread
par contre j'ai:
INCPATH = -I/usr/lib/qt4/mkspecs/linux-g++ -I. -I/usr/include/QtCore -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include/QtGui -I/usr/include -Idebug -I..
Je ne vois pas pourquoi il y a tant de bibliothèques prises en compte. Pour l'exemple donné, la ligne d'édition de lien donnée par QtCreator est seulement:
g++ -o Salut debug/main.o debug/mainwindow.o debug/moc_mainwindow.o -lQtGui -lQtCore -lpthread.
Dans le menu Tools/Options, puis dans le choix 'Qt4', que détecte-t-il comme version de Qt ?

Répondre à loupius

13

avion-f16, le 9 mar 2009 à 16:54:08

J'ai essayé la commande de Char Snipeur et voici le résultat :

collect2: ld a retourné 1 code d'état d'exécution


J'ai installer Qt 4.5 sous Vista et je n'ai aucun problème lors de la compilation donc je vais programmer sous Vista. N'empêche que dés qu'une mise à jour sortira, je l'installerai pour tester si la compilation fonctionne.

Merci à tous
Si je ne suis pas complet dans mes réponses, n'hésitez pas à­ le dire.

Répondre à avion-f16

14

Char Snipeur, le 10 mar 2009 à 08:29:35

Juste pour en avoir le cœur net, test un "Hello world" C++

#include <iostream>
int main()
{
    std::cout<<"Salut le monde !\n";
    return 0;
}
ça resemble beaucoup à un problème de compilateur, l'utilise tu souvent ?
Ce qui m'étonne le plus, c'est l'absence de message d'erreur explicite. En général, il y a au moins une ligne qui explique pourquoi ça n'a pas fonctionné.
Si le problème viens de gcc, la version 4.5.1 ne changera rien au problème. Salutation ! (il faut bien que vous compreniez que j'ai TOUJOURS raison)
Char Snipeur

Répondre à Char Snipeur

15

avion-f16, le 11 mar 2009 à 22:24:12

Que je fasses n'importe quoi, ça ne fonctionne pas sous Linux.

J'ai parfois le même problème sous Vista mais il suffit de relancer Qt Creator puis je peux recompiler (et sans rien avoir changé).
Si je ne suis pas complet dans mes réponses, n'hésitez pas à­ le dire.

Répondre à avion-f16

16

loupius, le 11 mar 2009 à 22:56:07

As-tu auparavant compilé un programme C++ avec gcc ?
As-tu auparavant compilé un programme avec la bibliothèque Qt et avec qDevelop ou Kdevelop ?
As-tu une autre version de Qt d'installé ?
Comme le dit Char Snipeur, ce doit être un problème de configuration. As-tu essayé l'exemple qu'il a donné ?
Pour moi, cela doit pouvoir fonctionner... sinon cela se saurait.

Répondre à loupius

17

avion-f16, le 11 mar 2009 à 23:01:20

Non je n'ai jamais fais de programmation avant l'installation de Qt 4.5.0 (je venais de formater).

J'avais déjà essayé de compiler un programme aussi court que ça.
Il ne me retourne rien à par error: collect2: ld a retourné 1 code d'état d'exécution
Si je ne suis pas complet dans mes réponses, n'hésitez pas à­ le dire.

Répondre à avion-f16

18

loupius, le 12 mar 2009 à 01:30:55

Bon, vu le message, ld est l'éditeur de lien; donc il y a une bibliothèque qu'il ne trouve pas.
Tu dis que tu viens de formater; lors de l'installation, as-tu réinstallé les bibliothèques du style: 'glib', 'glib2', 'glibc', 'glibc-devel',... et que sais-je encore, je ne les connais pas toutes.
Devant un tel problème, c'est dans cette direction que je chercherai, voire que je m'archarnerai en me disant qu'il n'y a pas de raison que ça ne marche pas.
Bonne chance.

Répondre à loupius

19

Char Snipeur, le 12 mar 2009 à 08:44:02

Et en activant l'option verbeuse, on aurait pas plus de résultats ?
peut être essayer de voir la configuration réelle de gcc (gcc -v) et la comparer avec ce qu'il y a sur le disque.
Je ne pense pas qu'il manque une lib, sinon il le dirai : il mettre undefine reference to glib, ou un truc dans le genre.
http://gcc.gnu.org/onlinedocs/gccint/Collect2.html
D'après ce lien, il y a deux ld : collect2 et ld, d'après le message c'est l'exécution du vrai ld qui retourne "1", c'est a dire que le vrai éditeur des liens s'est planté quelque part.
Et en l'absence de message : je sèche complètement. Je pense que je tenterai une réinstallation de gcc au complet. Ou éventuellement le téléchargement d'une nouvelle version (corruption du package ubuntu ?) Salutation ! (il faut bien que vous compreniez que j'ai TOUJOURS raison)
Char Snipeur

Répondre à Char Snipeur

20

_Pierre_Richard_, le 22 avr 2009 à 14:28:16

Yop Salut à tous,

J'ai eu les memes erreurs aujourd'hui lorsque j'ai essayé de faire ma premiere fenetre sous QT. c'est Char Sniper qui m'a mis sur la voie (Merci ! )

J'avais installer une version 3.x de gcc incompatible avec mon QT, j'ai donc restoré ma version originale sous Ubuntu 8.04.2 la version 4.2 de gcc et g++ et maintenant ca marche :)

Répondre à _Pierre_Richard_

21

neo, le 15 aoû 2009 à 20:59:04

Salut j'ai eu le meme probleme pendent un moment (sa ma fait planter un proget).
je croi pas que se soi un problem d'edition des liens mais un bug du compilateur
car quand je code:

class my_class
{
private:
voide my_fuction(int x, QString bidul);
};

my_class::my_fuction(int x, QString bidul) {}

il me met la meme erreur mais quand je code:

class my_class
{
private:
voide my_fuction(int , QString );
};

my_class::my_fuction(int x, QString bidul) {}
il ne plant pas.

Répondre à neo

22

Char Snipeur, le 17 aoû 2009 à 08:18:54

ça reviens à ce qu'on disait, car qui s'occupe de l'édition des liens ??? gcc non ? ... ba si. Salutation ! (il faut bien que vous compreniez que j'ai TOUJ­OURS raison)
Char Snipeur

Répondre à Char Snipeur

23

Eddy, le 26 aoû 2009 à 16:35:32

Bonjour à tous,

Excusez-moi d'en rajouter encore mais j'ai aussi des problèmes de compilation avec QT.
il affiche ces erreurs :

make: g++ : commande introuvable
make: *** [main.o] Erreur 127
make: quittant le répertoire « /home/eddy/LecteurAudio »
Exited with code 2.
Error while building project LecteurAudio
When executing build step 'Make'

Répondre à Eddy

24

avion-f16, le 26 aoû 2009 à 16:38:31

Ça, c'est une erreur dans ton code et rien de plus. Ton ordinateur ne fait pas ce que tu veux ... mais ce que tu­ lui dis de faire.

Répondre à avion-f16

25

Char Snipeur, le 28 aoû 2009 à 08:49:16

Je crois que ça c'est une erreur lié à Vista.
N'ayant pas ce windows de merde, je n'en sais pas beaucoup plus. Plein de réponse dans le forum ! Salutation ! (il faut bien que vous compreniez que j'ai TOUJ­OURS raison)
Char Snipeur

Répondre à Char Snipeur

26

EddyLinuxien, le 28 aoû 2009 à 13:46:58

Bonjours à tous,


c'était bien un problème lié à linux (plutot lié au manque de librairie) mais j'ai pu trouver
une solution via le site du zéro,
il faut suivre le tuto qui traite l'installation de code blocks.
pour plus de souplesse voici le lien ( http://www.siteduzero.com/... )

sinon il suffit de taper via le terminal cette commande: sudo apt-get install build-essential
voila j'espère que cela vous aidera amis linuxiens.

Répondre à EddyLinuxien

27

Char Snipeur, le 28 aoû 2009 à 13:50:29

Tu l'aurai dis que tu était sous Linux, ça aurait été plus simple...
Mais je ne dirai pas que c'est un problème lié à Linux, mais aux choix que tu as fait lors de l'installation. Salutation ! (il faut bien que vous compreniez que j'ai TOUJ­OURS raison)
Char Snipeur

Répondre à Char Snipeur

28

avion-f16, le 28 aoû 2009 à 14:12:08

Il l'a "dit" :

make: g++ : commande introuvable
make: *** [main.o] Erreur 127
make: quittant le répertoire « /home/eddy/LecteurAudio »
Exited with code 2.
Error while building project LecteurAudio
When executing build step 'Make'
Ton ordinateur ne fait pas ce que tu veux ... mais ce que tu lui dis de faire.

Répondre à avion-f16

29

 Char Snipeur, le 28 aoû 2009 à 15:24:18

Pas tout lu, "g++ : commande introuvable" suffit à définir le problème. Et puis ça ne veux pas forcément dire Linux "/home/[...]" mais que le système est Posix, donc UNIX, Linux, BSD. Ou encore qu'il est sous cygwin (qui toutne sous Vista) :-p Salutation ! (il faut bien que vous compreniez que j'ai TOUJOURS raison)
Char Snipeur

Répondre à Char Snipeur