Linkerprobleme mit static Qt 4.4.2/Mingw

Alles rund um die Programmierung mit Qt
Antworten
Cartman
Beiträge: 55
Registriert: 31. März 2006 16:55

Linkerprobleme mit static Qt 4.4.2/Mingw

Beitrag von Cartman »

Ich habe nun auf zwei XP-Rechnern und einem Vista64-Rechner versucht, Qt 4.4.2 Open Source (d. h. mit Mingw) statisch zu bauen:

Code: Alles auswählen

configure -static -release -platform win32-g++
Resultat (Stunden später beim Linken):

Code: Alles auswählen

g++ -enable-stdcall-fixup -Wl,-enable-auto-import
-Wl,-enable-runtime-pseudo-rel
oc -Wl,-s -mthreads -Wl -Wl,-subsystem,windows -o
release\formExtractor.exe tmp/
obj/release_static/main.o tmp/obj/release_static/formextractor.o
tmp/obj/release
_static/mainwindow.o tmp/obj/release_static/moc_formextractor.o
tmp/obj/release_
static/moc_mainwindow.o tmp/obj/release_static/qrc_formextractor.o
-L"h:\tmp\qt
-4.4.2\lib" -L"h:\tmp\qt-4.4.2\lib" -lmingw32 -lqtmain -lQtWebKit
-lQtGui -lQtNe
twork -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lwinspool -lmsimg32
-lQtCor
e -lkernel32 -luser32 -lshell32 -luuid -lole32 -ladvapi32 -lws2_32
tmp/obj/release_static/formextractor.o(.text+0xe0):formextractor.cpp:
undefined
reference to `_imp___ZN8QWebView6setUrlERK4QUrl'
tmp/obj/release_static/formextractor.o(.text+0x132):formextractor.cpp:
undefined
 reference to `_imp___ZNK8QWebView4pageEv'
tmp/obj/release_static/formextractor.o(.text+0x13d):formextractor.cpp:
undefined
 reference to `_imp___ZNK8QWebPage9mainFrameEv'
tmp/obj/release_static/formextractor.o(.text+0x310):formextractor.cpp:
undefined
 reference to `_imp___ZN8QWebView6setUrlERK4QUrl'
tmp/obj/release_static/formextractor.o(.text+0x362):formextractor.cpp:
undefined
 reference to `_imp___ZNK8QWebView4pageEv'
tmp/obj/release_static/formextractor.o(.text+0x36d):formextractor.cpp:
undefined
 reference to `_imp___ZNK8QWebPage9mainFrameEv'
tmp/obj/release_static/formextractor.o(.text+0x718):formextractor.cpp:
undefined
 reference to `_imp___ZNK8QWebView4pageEv'
tmp/obj/release_static/formextractor.o(.text+0x723):formextractor.cpp:
undefined
 reference to `_imp___ZNK8QWebPage9mainFrameEv'
tmp/obj/release_static/formextractor.o(.text+0x73a):formextractor.cpp:
undefined
 reference to
`_imp___ZN9QWebFrame27addToJavaScriptWindowObjectERK7QStringP7QObj
ect'
tmp/obj/release_static/formextractor.o(.text$_ZN7Ui_Form7setupUiEP7QWidget[Ui_Fo
rm::setupUi(QWidget*)]+0x459):formextractor.cpp: undefined reference to
`_imp___
ZN8QWebViewC1EP7QWidget'
tmp/obj/release_static/formextractor.o(.text$_ZN7Ui_Form7setupUiEP7QWidget[Ui_Fo
rm::setupUi(QWidget*)]+0x5b6):formextractor.cpp: undefined reference to
`_imp___
ZN8QWebView6setUrlERK4QUrl'
collect2: ld returned 1 exit status
mingw32-make[4]: *** [release\formExtractor.exe] Error 1
mingw32-make[4]: Leaving directory
`H:/tmp/qt-4.4.2/examples/webkit/formExtracto
r'
mingw32-make[3]: *** [release] Error 2
mingw32-make[3]: Leaving directory
`H:/tmp/qt-4.4.2/examples/webkit/formExtracto
r'
mingw32-make[2]: *** [sub-formExtractor-make_default] Error 2
mingw32-make[2]: Leaving directory `H:/tmp/qt-4.4.2/examples/webkit'
mingw32-make[1]: *** [sub-webkit-make_default] Error 2
mingw32-make[1]: Leaving directory `H:/tmp/qt-4.4.2/examples'
mingw32-make: *** [sub-examples-make_default-ordered] Error 2
"Workaround" bisher:

Code: Alles auswählen

configure ... -no-webkit
Dann geht's. Was läuft hier falsch? Warum kann ich nur ohne Webkit bauen?
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

Wann hast du Mingw das letzte mal updated?
Ich habe wie in http://wiki.qtcentre.org/index.php?titl ... dows#MinGW beschrieben ist qt4.5 static gebaut ohne problemen... mit WebKit ... jedoch keinen phonon.

extraiere MingW aus ftp://ftp.trolltech.com/qt/source/qt-wi ... -mingw.exe die ist super ... nur noch Minimal sys installieren und wget ub externe lib zu bauen...



Warum willst du static bauen?

IMO: mich wundert das es keine "emerge" gibt um qt zu bauen mit VS oder Mingw wie KDE win.
http://techbase.kde.org/Getting_Started ... ows/emerge
Python hat man doch fast immer im PC.
.........................
speack português italiano deutsch english castellà qt
Cartman
Beiträge: 55
Registriert: 31. März 2006 16:55

Beitrag von Cartman »

Ich benutze das Mingw aus dem offiziellen Qt 4.4.1 Installer. Die Version ist:

Code: Alles auswählen

gcc version 3.4.2 (mingw-special)
Zur Version 4.4.2 sollte sich der Compiler nicht geändert haben. Den exotischen Static-Build brauche ich für so eine MATLAB-Plugin-Sache. MATLAB liefert selbst (alte und wechselnde) Qt-Bibliotheken für seinen eigenen Komponenten mit. Mit dem Static-Build vermeide ich da Kollisionen.
nur noch Minimal sys installieren und wget ub externe lib zu bauen...
wget? MSYS hab ich nicht installiert. wget 1.10.2 ist in meinem texlive-Pfad, wie ich gerade sehe.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

webkit ging imho noch nie statisch in 4.4.x
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Cartman
Beiträge: 55
Registriert: 31. März 2006 16:55

Beitrag von Cartman »

Christian81 hat geschrieben:webkit ging imho noch nie statisch in 4.4.x
Ahso, dachte nur, ich würde irgendwo was falsch machen. Ich kann ansonsten auch gut auf das Webkit verzichten. Danke.
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

Cartman hat geschrieben:I
nur noch Minimal sys installieren und wget ub externe lib zu bauen...
wget? MSYS hab ich nicht installiert. wget 1.10.2 ist in meinem texlive-Pfad, wie ich gerade sehe.
MSYS http://www.mingw.org/wiki/msys ist einfach ein riesigen freund & helfer und gibt eine richtige console das einfuegen von text geht ueber CTRL+L oder was in der richtung , brauche ich nicht da ich script file brauche sh .

IMO: nicht noetig fuer jenigen die keine externe lib brauchen

Wget ist einfach eine download help

Code: Alles auswählen

#! /bin/sh -e
######## http://heanet.dl.sourceforge.net/sourceforge/mingw/wget-1.9.1-mingwPORT.tar.bz2

tar -xvjf wget-1.9.1-mingwPORT.tar.bz2
rm wget-1.9.1-mingwPORT.tar.bz2
mkdir /usr/src
mkdir /usr/local
mkdir /usr/local/bin
cd wget-1.9.1/mingwPORT
cp wget.exe /usr/local/bin
./mingwPORT.sh
cd
rm -rf wget-1.9.1
Nehmen wir an man soll 4 oder 5 externe lib holen und compilieren
libxml2 + libxslt + exiv2 um bilder camera info zu haben.

dan lade ich ein sh script wie dieses:
http://fop-miniscribus.googlecode.com/s ... ingwdep.sh

und innert wenigen minuten habe ich lib frisch gebaut...

Auf dieser weise kann man selber entscheiden

./configure --enable-static --disable-shared --prefix=$PWD/../../

Und somit werden viele lib statisch und nicht dll
.........................
speack português italiano deutsch english castellà qt
Antworten