[Qt] Fehler nach "configure -qt-sql-mysql" und "mingw32-make"
-
Hallo,
habe schon wieder ein Problem mit meinem Qt, ich will die Datenbank-Treiber
für MySQL benutzen, habe sie auch in dem Verzeichnis /src/plugins/sqldrivers/mysql
kompiliert. Dabei sind die Dateien "libqsqlmysqld4.a", "libqsqlmysql4.a",
"qsqlmysql4.dll" und "qsqlmysqld4.dll" entstanden.
Nun führe ich in Qt Prompt den Befehl "mingw32-make confclean", dann
"configure -qt-sql-mysql" und als letztes den Befehl "mingw32-make" aus.
Aber mein Problem liegt darin, dass nach dem letzten Befehl ein Fehler auftritt:g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-rel oc -mthreads -Wl -shared -Wl,--out-implib,c:\Qt\2010.02.1\qt\lib\libQtSqld4.a -o ..\..\lib\QtSqld4.dll object_script.QtSqld.Debug -L"c:\Qt\2010.02.1\qt\lib" -L "c:\Qt\2010.02.1\qt\lib" tmp\obj\debug_shared\QtSqld_resource_res.o -lmysql -lQt Cored4 c:/qt/2010.02.1/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../../mingw32/bin/ld.ex e: cannot find -lmysql collect2: ld returned 1 exit status mingw32-make[2]: *** [..\..\lib\QtSqld4.dll] Error 1 mingw32-make[2]: Leaving directory `C:/Qt/2010.02.1/qt/src/sql' mingw32-make[1]: *** [debug-all] Error 2 mingw32-make[1]: Leaving directory `C:/Qt/2010.02.1/qt/src/sql' mingw32-make: *** [sub-sql-make_default-ordered] Error 2
IgelHaut
Ps: Ich benutze die Qt-Version 4.6.2.0
-
Das Problem ist nicht der Compiler, sondern der Linker. In Zeile 6/7 ist der wesentliche Teil der Fehlermeldung:
cannot find -lmysql
Bist du dabei Qt zu übersetzen, oder ein selbstgeschriebenes Programm ?
-
Qt,
ich habe nehmlich gerade den MySQL-Driver kompiliert/installiert.
-
ich dachte für den source code muss man blechen?
-
Teile des SourceCodes sind im Verzeichnis qt/src gespeichert, das ist aber nicht der vollständige Code.
-
kopier mal die *.a- und *.dll-Dateien in das lib-Verzeichnis deines Compilers
-
Die erzeugten MySQL-Dateien?
-
Hast du denn mysql selber schon auf deinem Rechner installiert? Also die client-lib? Ich seh nämlich auch bei den Includedirs nicht den für MySql.
http://doc.qt.nokia.com/4.6/sql-driver.html#how-to-build-the-qmysql-plugin-on-windows
-
Ja
-
IgelHaut schrieb:
Ja
Glaub ich jetzt so nicht ganz
Der Installer wird denke ich selbst den PATH so erweitern, dass die MySQL-Lib über jenen zu finden ist. Schau mal deinen PATH an, ob da das mysql-libdir drinnen steht.
-
Das PATH aus dem Qt Prompt?
Mein MySQL ist in C:\MySQL installiert und das sind die Unterordner include und lib vorhanden.
-
IgelHaut schrieb:
Das PATH aus dem Qt Prompt?
Mein MySQL ist in C:\MySQL installiert und das sind die Unterordner include und lib vorhanden.
Die Umgebungsvariable. Der "Qt Prompt" erweitert nur automatisch die des Systems, so dass die Qt Libs usw. korrekt gefunden werden können.
Also geh in die Systemsteuerung und setz deinen PATH so, dass auch die bei dir gefundene mysql-lib gefunden werden kann. Also "C:\MySQL\lib".
-
und was soll ich in der systemsteuerung ändern?
-
IgelHaut schrieb:
und was soll ich in der systemsteuerung ändern?
Die PATH-Variable.
Allerdings muss ich zugeben dass ich von Windows nur so viel weiß, wie ich durch Doku-Lesen mitbekommen hab - ich hab kein Windows.
Wie sieht denn eigentlich die Zeile aus, die du eingegeben hast, um mit qmake das Makefile zu erstellen? Hast du das aus der Doku verwendet (siehe link oben)? Denn da steht ein "LIBS += "XYZ\libmysql.lib", evtl. reicht das ja...
-
Ich habe zum Erstellen des MySQL-Plugins die Zeile
qmake "INCLUDEPATH+=C:\MySQL\include" "LIBS+=C:\MYSQL\lib\opt\libmysql.lib" mysql.pro
verwendet und beim Configurieren habe ich
configure -qt-sql-mysql
eingetippt.
Bei configure --help wurde bei mir auch bei den verfügbaren SQL-Treibern der MySQL-Treiber aufgelistet:-no-sql-<driver> ... Disable SQL <driver> entirely, by default none are turned on. -qt-sql-<driver> ... Enable a SQL <driver> in the Qt Library. -plugin-sql-<driver> Enable SQL <driver> as a plugin to be linked to at run time. Available values for <driver>: mysql psql oci odbc tds db2 + sqlite sqlite2 ibase (drivers marked with a '+' have been detected as available on this system)
Denn vor dem Kompilieren des MySQL-Treibers war mysql nicht da.
-
Ich weiß nicht in wie weit qmake Case Sensitive ist (Windows Dateisysteme sind es ja nicht...) aber dein MySQL scheint in "C:\MySQL" zu liegen, die lib gibst du aber mit "C:\MYSQL" an.
Mach mal das "Y" klein, vllt hilft das.
-
Also das "y" sollte klein sein... hab aus Versehen groß geschrieben.
Aber das ganze bringt eh nicht, denn das MySQL-Plugin wird ja erstellt, es kommt
nur ein Fehler beim Kompilieren von Qt.
-
Was heißt denn dieses -lmysql?
-
IgelHaut schrieb:
Was heißt denn dieses -lmysql?
das er die libmysql.a und libmysql.dll nicht findet. Daher mein Vorschlag, die in den lib-Ordner deines Compilers zu kopieren. Du hast noch nicht erwähnt, dass du das bereits versucht hättest