Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 24/09/2009, à 16:44

Pico51

Cross compilation avec Qt

Bonjour,

J'aimerais pouvoir compiler une application Windows sous Ubuntu utilisant Qt.
J'ai, pour cela, suivi ce premier tuto : http://doc.qtfr.org/post/2007/04/10/Cross-Compilation-Native-dapplication-Qt-depuis-Linux

Lorsque je fais un make, j'ai l'erreur suivante :

tallotte@tallotte-laptop:~/Bureau/Qt/test$ qmake -project
tallotte@tallotte-laptop:~/Bureau/Qt/test$ qmake-qt4 -spec win32-x-g++
tallotte@tallotte-laptop:~/Bureau/Qt/test$ make
make -f Makefile.Release
make[1]: entrant dans le répertoire « /home/tallotte/Bureau/Qt/test »
Makefile.Release:125: attention : écrasement des commandes pour la cible « release/main.o »
Makefile.Release:122: attention : anciennes commandes ignorées pour la cible « release/main.o »
i586-mingw32msvc-g++ -c -O2 -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I"~/.wine/drive_c/Development/Qt/4.2.3/include/QtCore" -I"~/.wine/drive_c/Development/Qt/4.2.3/include/QtGui" -I"~/.wine/drive_c/Development/Qt/4.2.3/include" -I"." -I"release" -I"." -I"/usr/i586-mingw32msvc/include" -I"/usr/share/qt4/mkspecs/win32-x-g++" -o release/main.o win_test/main.cpp
win_test/main.cpp:1:24: erreur: QApplication : Aucun fichier ou dossier de ce type
win_test/main.cpp:2:23: erreur: QPushButton : Aucun fichier ou dossier de ce type
win_test/main.cpp: In function ‘int main(int, char**)’:
win_test/main.cpp:6: error: ‘QApplication’ was not declared in this scope
win_test/main.cpp:6: error: expected `;' before ‘app’
win_test/main.cpp:8: error: ‘QPushButton’ was not declared in this scope
win_test/main.cpp:8: error: expected `;' before ‘bouton’
win_test/main.cpp:9: error: ‘bouton’ was not declared in this scope
win_test/main.cpp:11: error: ‘app’ was not declared in this scope
make[1]: *** [release/main.o] Erreur 1
make[1]: quittant le répertoire « /home/tallotte/Bureau/Qt/test »
make: *** [release] Erreur 2

Apparemment, le compilateur ne trouve pas les fichiers header. Où sont-ils ? Que dois-je faire ?


J'ai ensuite suivi un autre tuto qui reprenait tout depuis le début : http://mtodorovic.developpez.com/linux/cross-compil-qt4/
Et là, j'ai une autre erreur :

tallotte@tallotte-laptop:~/Bureau/Qt/test$ qmake -project
tallotte@tallotte-laptop:~/Bureau/Qt/test$ qmake-qt4 -spec win32-crossCompil-g++ test.pro
tallotte@tallotte-laptop:~/Bureau/Qt/test$ make
make -f Makefile.Release
make[1]: entrant dans le répertoire « /home/tallotte/Bureau/Qt/test »
Makefile.Release:125: attention : écrasement des commandes pour la cible « release/main.o »
Makefile.Release:122: attention : anciennes commandes ignorées pour la cible « release/main.o »
i586-mingw32msvc-g++ -c -O2 -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I"/usr/local/qt4-win32/include/QtCore" -I"/usr/local/qt4-win32/include/QtGui" -I"/usr/local/qt4-win32/include" -I"." -I"release" -I"." -I"/usr/i586-mingw32msvc/include" -I"/usr/share/qt4/mkspecs/win32-crossCompil-g++" -o release/main.o win_test/main.cpp
In file included from /usr/local/qt4-win32/include/QtCore/qatomic_windows.h:1,
                 from /usr/local/qt4-win32/include/QtCore/../../src/corelib/arch/qatomic_arch.h:78,
                 from /usr/local/qt4-win32/include/QtCore/qatomic_arch.h:1,
                 from /usr/local/qt4-win32/include/QtCore/../../src/corelib/thread/qbasicatomic.h:207,
                 from /usr/local/qt4-win32/include/QtCore/qbasicatomic.h:1,
                 from /usr/local/qt4-win32/include/QtCore/../../src/corelib/thread/qatomic.h:46,
                 from /usr/local/qt4-win32/include/QtCore/qatomic.h:1,
                 from /usr/local/qt4-win32/include/QtCore/../../src/corelib/tools/qbytearray.h:46,
                 from /usr/local/qt4-win32/include/QtCore/qbytearray.h:1,
                 from /usr/local/qt4-win32/include/QtCore/../../src/corelib/tools/qstring.h:46,
                 from /usr/local/qt4-win32/include/QtCore/qstring.h:1,
                 from /usr/local/qt4-win32/include/QtCore/../../src/corelib/kernel/qobject.h:48,
                 from /usr/local/qt4-win32/include/QtCore/qobject.h:1,
                 from /usr/local/qt4-win32/include/QtCore/../../src/corelib/kernel/qcoreapplication.h:45,
                 from /usr/local/qt4-win32/include/QtCore/qcoreapplication.h:1,
                 from /usr/local/qt4-win32/include/QtGui/../../src/gui/kernel/qapplication.h:45,
                 from /usr/local/qt4-win32/include/QtGui/qapplication.h:1,
                 from /usr/local/qt4-win32/include/QtGui/QApplication:1,
                 from win_test/main.cpp:1:
/usr/local/qt4-win32/include/QtCore/../../src/corelib/arch/qatomic_windows.h: In member function ‘bool QBasicAtomicInt::ref()’:
/usr/local/qt4-win32/include/QtCore/../../src/corelib/arch/qatomic_windows.h:437: warning: dereferencing type-punned pointer will break strict-aliasing rules
/usr/local/qt4-win32/include/QtCore/../../src/corelib/arch/qatomic_windows.h: In member function ‘bool QBasicAtomicInt::deref()’:
/usr/local/qt4-win32/include/QtCore/../../src/corelib/arch/qatomic_windows.h:442: warning: dereferencing type-punned pointer will break strict-aliasing rules
/usr/local/qt4-win32/include/QtCore/../../src/corelib/arch/qatomic_windows.h: In member function ‘bool QBasicAtomicInt::testAndSetOrdered(int, int)’:
/usr/local/qt4-win32/include/QtCore/../../src/corelib/arch/qatomic_windows.h:447: warning: dereferencing type-punned pointer will break strict-aliasing rules
/usr/local/qt4-win32/include/QtCore/../../src/corelib/arch/qatomic_windows.h: In member function ‘int QBasicAtomicInt::fetchAndStoreOrdered(int)’:
/usr/local/qt4-win32/include/QtCore/../../src/corelib/arch/qatomic_windows.h:451: warning: dereferencing type-punned pointer will break strict-aliasing rules
/usr/local/qt4-win32/include/QtCore/../../src/corelib/arch/qatomic_windows.h: In member function ‘int QBasicAtomicInt::fetchAndAddOrdered(int)’:
/usr/local/qt4-win32/include/QtCore/../../src/corelib/arch/qatomic_windows.h:455: warning: dereferencing type-punned pointer will break strict-aliasing rules
In file included from /usr/local/qt4-win32/include/QtGui/qcolor.h:1,
                 from /usr/local/qt4-win32/include/QtGui/../../src/gui/image/qpixmap.h:46,
                 from /usr/local/qt4-win32/include/QtGui/qpixmap.h:1,
                 from /usr/local/qt4-win32/include/QtGui/../../src/gui/image/qicon.h:48,
                 from /usr/local/qt4-win32/include/QtGui/qicon.h:1,
                 from /usr/local/qt4-win32/include/QtGui/../../src/gui/widgets/qabstractbutton.h:45,
                 from /usr/local/qt4-win32/include/QtGui/qabstractbutton.h:1,
                 from /usr/local/qt4-win32/include/QtGui/../../src/gui/widgets/qpushbutton.h:45,
                 from /usr/local/qt4-win32/include/QtGui/qpushbutton.h:1,
                 from /usr/local/qt4-win32/include/QtGui/QPushButton:1,
                 from win_test/main.cpp:2:
/usr/local/qt4-win32/include/QtGui/../../src/gui/painting/qcolor.h: At global scope:
/usr/local/qt4-win32/include/QtGui/../../src/gui/painting/qcolor.h:241: warning: ‘QDataStream& operator<<(QDataStream&, const QColor&)’ redeclared without dllimport attribute: previous dllimport ignored
/usr/local/qt4-win32/include/QtGui/../../src/gui/painting/qcolor.h:242: warning: ‘QDataStream& operator>>(QDataStream&, QColor&)’ redeclared without dllimport attribute: previous dllimport ignored
In file included from /usr/local/qt4-win32/include/QtGui/qpainterpath.h:1,
                 from /usr/local/qt4-win32/include/QtGui/../../src/gui/painting/qtransform.h:45,
                 from /usr/local/qt4-win32/include/QtGui/qtransform.h:1,
                 from /usr/local/qt4-win32/include/QtGui/../../src/gui/image/qimage.h:45,
                 from /usr/local/qt4-win32/include/QtGui/qimage.h:1,
                 from /usr/local/qt4-win32/include/QtGui/../../src/gui/image/qpixmap.h:49,
                 from /usr/local/qt4-win32/include/QtGui/qpixmap.h:1,
                 from /usr/local/qt4-win32/include/QtGui/../../src/gui/image/qicon.h:48,
                 from /usr/local/qt4-win32/include/QtGui/qicon.h:1,
                 from /usr/local/qt4-win32/include/QtGui/../../src/gui/widgets/qabstractbutton.h:45,
                 from /usr/local/qt4-win32/include/QtGui/qabstractbutton.h:1,
                 from /usr/local/qt4-win32/include/QtGui/../../src/gui/widgets/qpushbutton.h:45,
                 from /usr/local/qt4-win32/include/QtGui/qpushbutton.h:1,
                 from /usr/local/qt4-win32/include/QtGui/QPushButton:1,
                 from win_test/main.cpp:2:
/usr/local/qt4-win32/include/QtGui/../../src/gui/painting/qpainterpath.h:233: warning: ‘QDataStream& operator<<(QDataStream&, const QPainterPath&)’ redeclared without dllimport attribute: previous dllimport ignored
/usr/local/qt4-win32/include/QtGui/../../src/gui/painting/qpainterpath.h:234: warning: ‘QDataStream& operator>>(QDataStream&, QPainterPath&)’ redeclared without dllimport attribute: previous dllimport ignored
In file included from /usr/local/qt4-win32/include/QtGui/qkeysequence.h:1,
                 from /usr/local/qt4-win32/include/QtGui/../../src/gui/widgets/qabstractbutton.h:46,
                 from /usr/local/qt4-win32/include/QtGui/qabstractbutton.h:1,
                 from /usr/local/qt4-win32/include/QtGui/../../src/gui/widgets/qpushbutton.h:45,
                 from /usr/local/qt4-win32/include/QtGui/qpushbutton.h:1,
                 from /usr/local/qt4-win32/include/QtGui/QPushButton:1,
                 from win_test/main.cpp:2:
/usr/local/qt4-win32/include/QtGui/../../src/gui/kernel/qkeysequence.h:199: warning: ‘QDataStream& operator<<(QDataStream&, const QKeySequence&)’ redeclared without dllimport attribute: previous dllimport ignored
/usr/local/qt4-win32/include/QtGui/../../src/gui/kernel/qkeysequence.h:200: warning: ‘QDataStream& operator>>(QDataStream&, QKeySequence&)’ redeclared without dllimport attribute: previous dllimport ignored
i586-mingw32msvc-g++ -mthreads -Wl,-enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -mwindows -Wl,-s -o release/test.exe release/main.o release/main.o  -L"/usr/local/qt4-win32/lib" -lQtGui4 -lQtCore4
release/main.o:main.cpp:(.text+0x0): multiple definition of `_main'
release/main.o:main.cpp:(.text+0x0): first defined here
collect2: ld returned 1 exit status
make[1]: *** [release/test.exe] Erreur 1
make[1]: quittant le répertoire « /home/tallotte/Bureau/Qt/test »
make: *** [release] Erreur 2

Là, je vous avoue que je n'ai pas tout compris de l'erreur.

Que dois-je faire ?

Je vous remercie de votre aide.

Hors ligne

#2 Le 25/09/2009, à 08:18

omc

Re : Cross compilation avec Qt

bonjour,
Tu as un problème à l'édition des liens, essayes de nettoyer en faisant "make clean" avant de faire "make"...

Hors ligne

#3 Le 25/09/2009, à 11:09

Pico51

Re : Cross compilation avec Qt

Cela ne change rien, dans les deux cas, j'obtiens la même erreur.

Hors ligne

#4 Le 26/09/2009, à 13:26

Pico51

Re : Cross compilation avec Qt

Petite précision, je veux bien sûr utiliser la version 4.5.2.
Dans les précédents posts, il ne faut donc pas lire 4.2.3 mais 4.5.2.

Hors ligne