MinGW installieren und Qt mit MySQL statisch kompilieren
MinGW installieren und Qt mit MySQL statisch kompilieren
Da oft danach gefragt wird, stelle ich einfach mal meine Vorgehensweise vor. Ich benutze für die Installation die Versionen Qt-4.3.2 und MySQL-5.0.45. Um eine bessere Übersicht zu behalten, installiere ich alles unterhalb des Verzeichnisses C:\Develop.
MinGW herunterladen und installieren
Quellen
http://www.mingw.org
http://sourceforge.net/project/showfile ... up_id=2435
Folgende Tools „current release“ herunterladen. (Achtung! Nicht die src Pakete.)
gcc-g++-<version>.tar.gz
gcc-core-<version>.tar.gz
binutils-<version>.tar.gz
mingw32-<version>.tar.gz
mingw-runtime-<version>.tar.gz
mingw-utils-<version>.tar.gz
w32api-<version>.tar.gz
Installieren
- Verzeichnis C:\Develop\MinGW anlegen.
- Alle heruntergeladenen Pakete in das Verzeichnis kopieren und hier entpacken.
Umgebungsvariablen setzen
- Start > Systemsteuerung > System > Erweitert > Umgebungsvariablen
- Unter Systemvariablen die Variable Path bearbeiten.
- Am Ende der Einträge, durch ein Semikolon getrennt C:\Develop\MinGW\bin hinzufügen.
Testen
- Eingabeaufforderung öffnen und folgende Befehle ausführen.
- gcc --version sollte die installierte GCC-Version anzeigen.
- mingw32-make --version sollte die installierte Make-Version anzeigen.
MySQL herunterladen und installieren
Quellen
http://www.mysql.com
http://dev.mysql.com/downloads/mysql/5.0.html#win32
Installerversion (mysql-5.0.45-win32.zip) herunterladen.
Installieren
- Nach C:\Develop\MySQL installieren.
- Option C/C++ Header Files installieren auswählen.
- Option Umgebungsvariablen setzen auswählen.
Statische Import-Lib
Da der MinGW Linker nicht zu den MySQL DLL´s (libmysql.dll) kompatibel ist, muß eine statische Import-Lib (libmysql.a) erzeugt werden. Dazu werden zwei Tools (reimp.exe und dlltool.exe) aus dem Paket mingw-utils benötigt, die mit der MinGW Installation oben schon installiert wurden.
- Eingabeaufforderung öffnen und in das Verzeichnis C:\Develop\MySQL\lib\opt wechseln.
- Folgende Befehle ausführen.
- C:\Develop\MySQL\lib\opt>reimp -d libmysql.lib
- C:\Develop\MySQL\lib\opt>dlltool -k -d libmysql.def -l libmysql.a
Damit anschließend bei der Konfiguration von Qt die Pfade für die includes und libs nicht mit angegeben werden müssen, müssen ein paar Dateien umkopiert werden.
- C:\Develop\MySQL\lib\opt\libmysql.a nach C:\Develop\MinGW\lib kopieren.
- Alle Dateien aus C:\Develop\MySQL\include nach C:\Develop\MinGW\include kopieren.
Qt installieren und konfigurieren
Quellen
http://trolltech.com/developer/downloads/qt/windows
Achtung! Das src Paket herunterladen.
Installieren
- Verzeichnis C:\Develop\Qt anlegen.
- qt-win-opensource-src-4.3.2.zip in das Verzeichnis kopieren und hier entpacken.
- Entpackten Ordner umbennen in 4.3.2-static
Konfigurieren
- Datei C:\Develop\Qt\4.3.2-static\mkspecs\win32-g++\qmake.conf öffnen
- QMAKE_LFLAGS = -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc
- ändern in
- QMAKE_LFLAGS = -static -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc
- Eingabeaufforderung öffnen und in das Verzeichnis C:\Develop\Qt\4.3.2-static wechseln.
- Folgende Befehle ausführen.
- C:\Develop\Qt\4.3.2-static>configure -static -release -no-exceptions -qt-sql-odbc -qt-sql-mysql -qt-sql-sqlite -qt-gif -qt-libpng -qt-libjpeg -qt-libtiff -no-vcproj
- C:\Develop\Qt\4.3.2-static>mingw32-make sub-src
- C:\Develop\Qt\4.3.2-static>mingw32-make sub-tools
Umgebungsvariablen setzen
Start > Systemsteuerung > System > Erweitert > Umgebungsvariablen
Unter Systemvariablen die Variable Path bearbeiten.
Am Ende der Einträge, durch ein Semikolon getrennt C:\Develop\Qt\4.3.2-static\bin hinzufügen.
Fertig
MfG RD1978
MinGW herunterladen und installieren
Quellen
http://www.mingw.org
http://sourceforge.net/project/showfile ... up_id=2435
Folgende Tools „current release“ herunterladen. (Achtung! Nicht die src Pakete.)
gcc-g++-<version>.tar.gz
gcc-core-<version>.tar.gz
binutils-<version>.tar.gz
mingw32-<version>.tar.gz
mingw-runtime-<version>.tar.gz
mingw-utils-<version>.tar.gz
w32api-<version>.tar.gz
Installieren
- Verzeichnis C:\Develop\MinGW anlegen.
- Alle heruntergeladenen Pakete in das Verzeichnis kopieren und hier entpacken.
Umgebungsvariablen setzen
- Start > Systemsteuerung > System > Erweitert > Umgebungsvariablen
- Unter Systemvariablen die Variable Path bearbeiten.
- Am Ende der Einträge, durch ein Semikolon getrennt C:\Develop\MinGW\bin hinzufügen.
Testen
- Eingabeaufforderung öffnen und folgende Befehle ausführen.
- gcc --version sollte die installierte GCC-Version anzeigen.
- mingw32-make --version sollte die installierte Make-Version anzeigen.
MySQL herunterladen und installieren
Quellen
http://www.mysql.com
http://dev.mysql.com/downloads/mysql/5.0.html#win32
Installerversion (mysql-5.0.45-win32.zip) herunterladen.
Installieren
- Nach C:\Develop\MySQL installieren.
- Option C/C++ Header Files installieren auswählen.
- Option Umgebungsvariablen setzen auswählen.
Statische Import-Lib
Da der MinGW Linker nicht zu den MySQL DLL´s (libmysql.dll) kompatibel ist, muß eine statische Import-Lib (libmysql.a) erzeugt werden. Dazu werden zwei Tools (reimp.exe und dlltool.exe) aus dem Paket mingw-utils benötigt, die mit der MinGW Installation oben schon installiert wurden.
- Eingabeaufforderung öffnen und in das Verzeichnis C:\Develop\MySQL\lib\opt wechseln.
- Folgende Befehle ausführen.
- C:\Develop\MySQL\lib\opt>reimp -d libmysql.lib
- C:\Develop\MySQL\lib\opt>dlltool -k -d libmysql.def -l libmysql.a
Damit anschließend bei der Konfiguration von Qt die Pfade für die includes und libs nicht mit angegeben werden müssen, müssen ein paar Dateien umkopiert werden.
- C:\Develop\MySQL\lib\opt\libmysql.a nach C:\Develop\MinGW\lib kopieren.
- Alle Dateien aus C:\Develop\MySQL\include nach C:\Develop\MinGW\include kopieren.
Qt installieren und konfigurieren
Quellen
http://trolltech.com/developer/downloads/qt/windows
Achtung! Das src Paket herunterladen.
Installieren
- Verzeichnis C:\Develop\Qt anlegen.
- qt-win-opensource-src-4.3.2.zip in das Verzeichnis kopieren und hier entpacken.
- Entpackten Ordner umbennen in 4.3.2-static
Konfigurieren
- Datei C:\Develop\Qt\4.3.2-static\mkspecs\win32-g++\qmake.conf öffnen
- QMAKE_LFLAGS = -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc
- ändern in
- QMAKE_LFLAGS = -static -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc
- Eingabeaufforderung öffnen und in das Verzeichnis C:\Develop\Qt\4.3.2-static wechseln.
- Folgende Befehle ausführen.
- C:\Develop\Qt\4.3.2-static>configure -static -release -no-exceptions -qt-sql-odbc -qt-sql-mysql -qt-sql-sqlite -qt-gif -qt-libpng -qt-libjpeg -qt-libtiff -no-vcproj
- C:\Develop\Qt\4.3.2-static>mingw32-make sub-src
- C:\Develop\Qt\4.3.2-static>mingw32-make sub-tools
Umgebungsvariablen setzen
Start > Systemsteuerung > System > Erweitert > Umgebungsvariablen
Unter Systemvariablen die Variable Path bearbeiten.
Am Ende der Einträge, durch ein Semikolon getrennt C:\Develop\Qt\4.3.2-static\bin hinzufügen.
Fertig
MfG RD1978
- Dateianhänge
-
- qt-mysql-static.rar
- Hier nochmal als PDF ;-)
- (62.57 KiB) 1038-mal heruntergeladen
-
- Beiträge: 503
- Registriert: 29. Dezember 2006 22:54
- Wohnort: HL
vielen dank fuer die anleitung, super ding!
ich hatte nur das problem, dass ich das paket "mingw32-<version>.tar.gz" auf der sourceforge-seite (link) nicht gefunden habe.
deshalb habe ich den automatischen installer (fuer windows) genommen und qt damit statisch kompiliert, hat alles geklappt, kein problem.
wenn ich nun aber ein qt-programm kompilieren mittels mingw32-make, verlangt das programm nach "mingwm10.dll" (sofern mingw nicht installiert ist).
ist das normal, kann man das irgendwie umgehen?
ich wollte ja eigentlich gar keine dlls mehr mit den programmen ausliefern muessen.
mfg,
julian
ich hatte nur das problem, dass ich das paket "mingw32-<version>.tar.gz" auf der sourceforge-seite (link) nicht gefunden habe.
deshalb habe ich den automatischen installer (fuer windows) genommen und qt damit statisch kompiliert, hat alles geklappt, kein problem.
wenn ich nun aber ein qt-programm kompilieren mittels mingw32-make, verlangt das programm nach "mingwm10.dll" (sofern mingw nicht installiert ist).
ist das normal, kann man das irgendwie umgehen?
ich wollte ja eigentlich gar keine dlls mehr mit den programmen ausliefern muessen.
mfg,
julian
Hallo,
also wenn Du nach dieser Anleitung Qt-4.3.2 kompilliert hast, sollte die mingwm10.dll eigentlich keine Abhängigkeit mehr sein. Die einzige Abhängigkeit die man noch hat, ist die libmysql.dll wenn man sql verwendet.
Die Abhängigkeiten kannst Du mit Dependency Walker überprüfen.
Bei Qt Versionen < 4.3.0 http://www.qtwiki.de/wiki/Mingw10.dll
MfG RD1978
also wenn Du nach dieser Anleitung Qt-4.3.2 kompilliert hast, sollte die mingwm10.dll eigentlich keine Abhängigkeit mehr sein. Die einzige Abhängigkeit die man noch hat, ist die libmysql.dll wenn man sql verwendet.
Die Abhängigkeiten kannst Du mit Dependency Walker überprüfen.
Bei Qt Versionen < 4.3.0 http://www.qtwiki.de/wiki/Mingw10.dll
MfG RD1978
-
- Beiträge: 503
- Registriert: 29. Dezember 2006 22:54
- Wohnort: HL
Hallo!
Erstmal vielen Dank für diese Anleitung, hat mir sehr weitergeholfen.
Trotzdem habe ich Probleme damit:
Ich bin nach der Anleitung vorgegangen, habe die jeweils aktuellen Versionen der benötigten Programme verwendet.
Probleme bei "configure" konnte ich mit Hilfe der hier beschriebenen Lösung ausräumen.
Im Anschluss funktionierte "mingw32-make sub-src" ohne weitere fehlermeldungen.
Das Problem tritt jetzt allerdings auf, wenn ich versuche "mingw32-make sub-tools" auszuführen. Hier der Ausschnitt aus meiner Konsole:
Bin für jede Idee dankbar, wie ich die tools doch kompiliert bekomme!
MfG,
Florian
Erstmal vielen Dank für diese Anleitung, hat mir sehr weitergeholfen.
Trotzdem habe ich Probleme damit:
Ich bin nach der Anleitung vorgegangen, habe die jeweils aktuellen Versionen der benötigten Programme verwendet.
Probleme bei "configure" konnte ich mit Hilfe der hier beschriebenen Lösung ausräumen.
Im Anschluss funktionierte "mingw32-make sub-src" ohne weitere fehlermeldungen.
Das Problem tritt jetzt allerdings auf, wenn ich versuche "mingw32-make sub-tools" auszuführen. Hier der Ausschnitt aus meiner Konsole:
Code: Alles auswählen
mingw32-make[5]: Entering directory `D:/Develop/Qt/4.4.3-static/tools/assistant/
tools/assistant'
g++ -static -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-ps
eudo-reloc -Wl,-s -Wl,-subsystem,windows -o ..\..\..\..\bin\assistant.exe object
_script.assistant.Release -L"d:\Develop\Qt\4.4.3-static\lib" -L"d:\Develop\Qt\4
.4.3-static\lib" -lmingw32 -lqtmain tmp\obj\release_static\assistant_res.o -LD:/
Develop/Qt/4.4.3-static/plugins/sqldrivers -lQtHelp -lQtCLucene -lQtSql -lQtXml
-lQtGui -lQtNetwork -lmysql -lodbc32 -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwin
mm -lwinspool -lmsimg32 -lQtCore -lkernel32 -luser32 -lshell32 -luuid -lole32 -l
advapi32 -lws2_32
d:\Develop\Qt\4.4.3-static\lib\libQtSql.a(qsql_mysql.o):qsql_mysql.cpp:(.text+0x
e): undefined reference to `mysql_character_set_name@4'
d:\Develop\Qt\4.4.3-static\lib\libQtSql.a(qsql_mysql.o):qsql_mysql.cpp:(.text+0x
8b): undefined reference to `mysql_error@4'
d:\Develop\Qt\4.4.3-static\lib\libQtSql.a(qsql_mysql.o):qsql_mysql.cpp:(.text+0x
--snip--
hier kommen noch ohne ende ähnliche meldungen mit anderen mysql_-variablen
---------
4887): undefined reference to `mysql_stmt_bind_param@8'
d:\Develop\Qt\4.4.3-static\lib\libQtSql.a(qsql_mysql.o):qsql_mysql.cpp:(.text+0x
4e0c): undefined reference to `mysql_stmt_attr_set@12'
collect2: ld returned 1 exit status
mingw32-make[5]: *** [..\..\..\..\bin\assistant.exe] Error 1
mingw32-make[5]: Leaving directory `D:/Develop/Qt/4.4.3-static/tools/assistant/t
ools/assistant'
mingw32-make[4]: *** [release] Error 2
mingw32-make[4]: Leaving directory `D:/Develop/Qt/4.4.3-static/tools/assistant/t
ools/assistant'
mingw32-make[3]: *** [sub-assistant-make_default-ordered] Error 2
mingw32-make[3]: Leaving directory `D:/Develop/Qt/4.4.3-static/tools/assistant/t
ools'
mingw32-make[2]: *** [sub-tools-make_default-ordered] Error 2
mingw32-make[2]: Leaving directory `D:/Develop/Qt/4.4.3-static/tools/assistant'
mingw32-make[1]: *** [sub-assistant-make_default-ordered] Error 2
mingw32-make[1]: Leaving directory `D:/Develop/Qt/4.4.3-static/tools'
mingw32-make: *** [sub-tools] Error 2
MfG,
Florian
-
- Beiträge: 29
- Registriert: 6. Mai 2009 16:44
- Kontaktdaten:
Hallo Leute,
ich hatte hier das Problem, dass das Kompilieren nicht ging. Das lag nicht wie vermutet an Windows Vista sondern an dem QT Paket. Es scheint, dass das QT Paket mit dem Creator-SDK nicht die vollständigen Sourcen an Bord hat. Auf die Idee bin ich gekommen, als ich mir die Downloadseite genau anschaute. dort steht bei
"Qt SDK: Complete Development Environment"
folgendes:
"Qt libraries"
und bei:
"Qt: Framework Only"
folgendes:
"Modular Qt libraries"
Ich hoffe das Phänomen ist hiermit geklärt Auf jedenfall kann ich nun alles sauber kompilieren.
LG Floppy
ich hatte hier das Problem, dass das Kompilieren nicht ging. Das lag nicht wie vermutet an Windows Vista sondern an dem QT Paket. Es scheint, dass das QT Paket mit dem Creator-SDK nicht die vollständigen Sourcen an Bord hat. Auf die Idee bin ich gekommen, als ich mir die Downloadseite genau anschaute. dort steht bei
"Qt SDK: Complete Development Environment"
folgendes:
"Qt libraries"
und bei:
"Qt: Framework Only"
folgendes:
"Modular Qt libraries"
Ich hoffe das Phänomen ist hiermit geklärt Auf jedenfall kann ich nun alles sauber kompilieren.
LG Floppy
-
- Beiträge: 1
- Registriert: 5. Mai 2010 22:02