Seite 1 von 1

Qt MySQL Treiber unter Mac OS installieren

Verfasst: 23. Mai 2011 21:09
von Marcus Breuer
Guten Abend Leute,

ich habe probiert den MySQL Treiber für Qt zu installieren, denke, dass ich auch garnicht so früh gescheitert bin, allerdings scheint es doch irgendwo ein gravierendes problem zu geben, das ich alleine nicht gelöst bekomme.

Also zunächst, ich habe mir für Mac OS das komplette SDK heruntergeladen und installiert. Da ich erst später mit MySQL arbeiten wollte, wusste ich im Vorfeld nicht, dass sich das scheinbar als Fehler erweisen wird.

Ich habe mir dann den reinen source code runtergeladen und mir aus dem Ordner src/... alles rauskopiert, was ich brauche. Und die Dateien dann einfach
in den entsprechenden Ordner meiner Installation des SDK's gepackt. Dort habe ich dann qmake aufgerufen. Das scheint auch zu klappen, allerdings bei make scheitert es. Ich zeige Euch jetzt mal die Fehlermeldung. Falls die Erklärung zu ungenau war oder zu wenig Informationen enthält, dann bitte sagt mir was Ihr wissen müsst, ich schreibe dann auch gerne alles ganz detailliert auf. Nun zum Fehlercode:

Code: Alles auswählen

Marcus-Breuers-MacBook-Pro:sqldrivers marcusbreuer$ make
g++ -c -pipe -g -gdwarf-2 -arch x86_64 -Xarch_x86_64 -mmacosx-version-min=10.5 -Wall -W -DQT_GUI_LIB -DQT_CORE_LIB -I../../mkspecs/macx-g++ -I. -I../../lib/QtCore.framework/Versions/4/Headers -I../../include/QtCore -I../../lib/QtGui.framework/Versions/4/Headers -I../../include/QtGui -I../../include -I/usr/local/mysql-5.5.12-osx10.6-x86/include -I. -F/Developer/Qt/Desktop/Qt/473/gcc/lib -o main.o main.cpp
g++ -headerpad_max_install_names -arch x86_64 -Xarch_x86_64 -mmacosx-version-min=10.5 -o qsqlmysql.app/Contents/MacOS/qsqlmysql main.o   -F/Developer/Qt/Desktop/Qt/473/gcc/lib -L/Developer/Qt/Desktop/Qt/473/gcc/lib -L/usr/local/mysql/lib -lmysqlclient_r -framework QtGui -framework QtCore 
ld: warning: in /usr/local/mysql/lib/libmysqlclient_r.dylib, file is not of required architecture
Undefined symbols:
  "_main", referenced from:
      start in crt1.10.5.o
  "QSqlDriverPlugin::qt_metacast(char const*)", referenced from:
      vtable for QMYSQLDriverPluginin main.o
  "typeinfo for QSqlDriverPlugin", referenced from:
      typeinfo for QMYSQLDriverPluginin main.o
  "QSqlDriverPlugin::metaObject() const", referenced from:
      vtable for QMYSQLDriverPluginin main.o
  "QMYSQLDriver::QMYSQLDriver(QObject*)", referenced from:
      QMYSQLDriverPlugin::create(QString const&) in main.o
  "QSqlDriverPlugin::~QSqlDriverPlugin()", referenced from:
      QMYSQLDriverPlugin::~QMYSQLDriverPlugin()in main.o
      QMYSQLDriverPlugin::~QMYSQLDriverPlugin()in main.o
  "QSqlDriverPlugin::QSqlDriverPlugin(QObject*)", referenced from:
      QMYSQLDriverPlugin::QMYSQLDriverPlugin()in main.o
      QMYSQLDriverPlugin::QMYSQLDriverPlugin()in main.o
  "QSqlDriverPlugin::qt_metacall(QMetaObject::Call, int, void**)", referenced from:
      vtable for QMYSQLDriverPluginin main.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [qsqlmysql.app/Contents/MacOS/qsqlmysql] Error 1

Grüße,
Marcus

Verfasst: 24. Mai 2011 15:05
von Marcus Breuer
Ich habe es jetzt genauso wie in der Anleitung unter

http://doc.qt.nokia.com/4.7/sql-driver. ... ase-driver

gemacht und leider konnte ich meinem Ziel noch nicht näher kommen. Ich bitte dringend um Hilfe. Hier der folgende Fehlercode, der sich glaube ich garnicht mal so sehr vom anderen unterscheidet:

Code: Alles auswählen

Last login: Tue May 24 15:01:09 on ttys000
Marcus-Breuers-MacBook-Pro:~ marcusbreuer$ cd /Applications/Qt/473/src/plugins/sqldrivers/mysql
Marcus-Breuers-MacBook-Pro:mysql marcusbreuer$ /usr/local/Trolltech/Qt-4.7.3/bin/qmake -o Makefile "INCLUDEPATH+=/usr/local/mysql/include" "LIBS+=-L/usr/local/mysql/lib -lmysqlclient_r" mysql.pro
Marcus-Breuers-MacBook-Pro:mysql marcusbreuer$ make
make -f Makefile.Debug
rm -f libqsqlmysql_debug.dylib
g++ -headerpad_max_install_names -arch x86_64 -single_module -dynamiclib -Xarch_x86_64 -mmacosx-version-min=10.5 -o libqsqlmysql_debug.dylib debug/main.o debug/qsql_mysql.o debug/moc_qsql_mysql.o  -F/usr/local/Trolltech/Qt-4.7.3/lib -L/usr/local/Trolltech/Qt-4.7.3/lib -L/usr/local/mysql/lib -lmysqlclient_r -framework QtSql -L/usr/local/Trolltech/Qt-4.7.3/lib -F/usr/local/Trolltech/Qt-4.7.3/lib -framework QtCore  
ld: warning: in /usr/local/mysql/lib/libmysqlclient_r.dylib, file is not of required architecture
Undefined symbols:
  "_mysql_stmt_close", referenced from:
      QMYSQLResult::cleanup()      in qsql_mysql.o
  "_mysql_next_result", referenced from:
      QMYSQLResult::cleanup()      in qsql_mysql.o
      QMYSQLResult::nextResult()       in qsql_mysql.o
  "_mysql_list_tables", referenced from:
      QMYSQLDriver::tables(QSql::TableType) const  in qsql_mysql.o
  "_mysql_stmt_bind_result", referenced from:
      QMYSQLResult::exec()      in qsql_mysql.o
      QMYSQLResult::exec()      in qsql_mysql.o
  "_mysql_close", referenced from:
      QMYSQLDriver::close()      in qsql_mysql.o
      QMYSQLDriver::open(QString const&, QString const&, QString const&, QString const&, int, QString const&)in qsql_mysql.o
      QMYSQLDriver::open(QString const&, QString const&, QString const&, QString const&, int, QString const&)in qsql_mysql.o
  "_mysql_select_db", referenced from:
      QMYSQLDriver::open(QString const&, QString const&, QString const&, QString const&, int, QString const&)in qsql_mysql.o
  "_mysql_affected_rows", referenced from:
      QMYSQLResult::nextResult()       in qsql_mysql.o
      QMYSQLResult::reset(QString const&) in qsql_mysql.o
  "_mysql_stmt_num_rows", referenced from:
      QMYSQLResult::size()      in qsql_mysql.o
      QMYSQLResult::fetchLast()      in qsql_mysql.o
  "_mysql_stmt_reset", referenced from:
      QMYSQLResult::exec()      in qsql_mysql.o
  "_mysql_list_fields", referenced from:
      QMYSQLDriver::record(QString const&) constin qsql_mysql.o
  "_mysql_character_set_name", referenced from:
      codec(st_mysql*)     in qsql_mysql.o
  "_mysql_stmt_insert_id", referenced from:
      QMYSQLResult::lastInsertId() const  in qsql_mysql.o
  "_mysql_num_fields", referenced from:
      QMYSQLResultPrivate::bindInValues()       in qsql_mysql.o
  "_mysql_field_seek", referenced from:
      QMYSQLResult::record() const in qsql_mysql.o
      QMYSQLResult::record() const in qsql_mysql.o
  "_mysql_server_init", referenced from:
      qLibraryInit()      in qsql_mysql.o
  "_mysql_insert_id", referenced from:
      QMYSQLResult::lastInsertId() const  in qsql_mysql.o
  "_mysql_stmt_param_count", referenced from:
      QMYSQLResult::exec()      in qsql_mysql.o
      QMYSQLResult::exec()      in qsql_mysql.o
      QMYSQLResult::prepare(QString const&) in qsql_mysql.o
      QMYSQLResult::prepare(QString const&) in qsql_mysql.o
  "_mysql_server_end", referenced from:
      qLibraryEnd()      in qsql_mysql.o
  "_mysql_get_server_version", referenced from:
      QMYSQLDriver::tables(QSql::TableType) const  in qsql_mysql.o
      QMYSQLDriver::open(QString const&, QString const&, QString const&, QString const&, int, QString const&)in qsql_mysql.o
  "_mysql_stmt_data_seek", referenced from:
      QMYSQLResult::fetch(int)   in qsql_mysql.o
  "_mysql_stmt_bind_param", referenced from:
      QMYSQLResult::exec()      in qsql_mysql.o
  "_mysql_fetch_row", referenced from:
      QMYSQLDriver::tables(QSql::TableType) const  in qsql_mysql.o
      QMYSQLResult::fetchNext()      in qsql_mysql.o
      QMYSQLResult::fetch(int)   in qsql_mysql.o
  "_mysql_data_seek", referenced from:
      QMYSQLDriver::tables(QSql::TableType) const  in qsql_mysql.o
      QMYSQLResult::fetch(int)   in qsql_mysql.o
  "_mysql_stmt_execute", referenced from:
      QMYSQLResult::exec()      in qsql_mysql.o
  "_mysql_stmt_fetch", referenced from:
      QMYSQLResult::fetchNext()      in qsql_mysql.o
      QMYSQLResult::fetch(int)   in qsql_mysql.o
  "_mysql_field_count", referenced from:
      QMYSQLResult::nextResult()       in qsql_mysql.o
      QMYSQLResult::reset(QString const&) in qsql_mysql.o
      QMYSQLResult::reset(QString const&) in qsql_mysql.o
  "_mysql_fetch_field", referenced from:
      QMYSQLResultPrivate::bindInValues()       in qsql_mysql.o
      QMYSQLDriver::record(QString const&) constin qsql_mysql.o
      QMYSQLResult::record() const in qsql_mysql.o
      QMYSQLResult::record() const in qsql_mysql.o
  "_mysql_stmt_store_result", referenced from:
      QMYSQLResult::exec()      in qsql_mysql.o
  "_mysql_num_rows", referenced from:
      QMYSQLResult::size()      in qsql_mysql.o
      QMYSQLResult::fetchLast()      in qsql_mysql.o
  "_mysql_free_result", referenced from:
      QMYSQLDriver::tables(QSql::TableType) const  in qsql_mysql.o
      QMYSQLResult::cleanup()      in qsql_mysql.o
      QMYSQLResult::cleanup()      in qsql_mysql.o
      QMYSQLResult::cleanup()      in qsql_mysql.o
      QMYSQLDriver::record(QString const&) constin qsql_mysql.o
      QMYSQLResult::nextResult()       in qsql_mysql.o
  "_mysql_thread_init", referenced from:
      QMYSQLDriver::open(QString const&, QString const&, QString const&, QString const&, int, QString const&)in qsql_mysql.o
  "_mysql_real_connect", referenced from:
      QMYSQLDriver::open(QString const&, QString const&, QString const&, QString const&, int, QString const&)in qsql_mysql.o
  "_mysql_stmt_result_metadata", referenced from:
      QMYSQLResultPrivate::bindInValues()       in qsql_mysql.o
  "_mysql_query", referenced from:
      QMYSQLDriver::rollbackTransaction()       in qsql_mysql.o
      QMYSQLDriver::commitTransaction()       in qsql_mysql.o
      QMYSQLDriver::beginTransaction()       in qsql_mysql.o
  "_mysql_real_query", referenced from:
      QMYSQLResult::reset(QString const&) in qsql_mysql.o
  "_mysql_set_character_set", referenced from:
      QMYSQLDriver::open(QString const&, QString const&, QString const&, QString const&, int, QString const&)in qsql_mysql.o
  "_mysql_options", referenced from:
      QMYSQLDriver::open(QString const&, QString const&, QString const&, QString const&, int, QString const&)in qsql_mysql.o
  "_mysql_stmt_errno", referenced from:
      qMakeStmtError(QString const&, QSqlError::ErrorType, st_mysql_stmt*) in qsql_mysql.o
  "_mysql_stmt_error", referenced from:
      qMakeStmtError(QString const&, QSqlError::ErrorType, st_mysql_stmt*) in qsql_mysql.o
  "_mysql_errno", referenced from:
      QMYSQLResult::record() const in qsql_mysql.o
      qMakeError(QString const&, QSqlError::ErrorType, QMYSQLDriverPrivate const*)in qsql_mysql.o
  "_mysql_error", referenced from:
      qMakeError(QString const&, QSqlError::ErrorType, QMYSQLDriverPrivate const*)in qsql_mysql.o
  "_mysql_stmt_init", referenced from:
      QMYSQLResult::prepare(QString const&) in qsql_mysql.o
  "_mysql_real_escape_string", referenced from:
      QMYSQLDriver::formatValue(QSqlField const&, bool) constin qsql_mysql.o
  "_mysql_stmt_affected_rows", referenced from:
      QMYSQLResult::exec()      in qsql_mysql.o
  "_mysql_fetch_field_direct", referenced from:
      QMYSQLResult::nextResult()       in qsql_mysql.o
      QMYSQLResult::reset(QString const&) in qsql_mysql.o
  "_mysql_store_result", referenced from:
      QMYSQLResult::cleanup()      in qsql_mysql.o
      QMYSQLResult::nextResult()       in qsql_mysql.o
      QMYSQLResult::reset(QString const&) in qsql_mysql.o
  "_mysql_stmt_attr_set", referenced from:
      QMYSQLResult::exec()      in qsql_mysql.o
  "_mysql_thread_end", referenced from:
      QMYSQLDriver::close()      in qsql_mysql.o
  "_mysql_stmt_prepare", referenced from:
      QMYSQLResult::prepare(QString const&) in qsql_mysql.o
  "_mysql_get_client_version", referenced from:
      QMYSQLDriver::open(QString const&, QString const&, QString const&, QString const&, int, QString const&)in qsql_mysql.o
  "_mysql_fetch_lengths", referenced from:
      QMYSQLResult::data(int)   in qsql_mysql.o
  "_mysql_init", referenced from:
      QMYSQLDriver::open(QString const&, QString const&, QString const&, QString const&, int, QString const&)in qsql_mysql.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make[1]: *** [libqsqlmysql_debug.dylib] Error 1
make: *** [debug] Error 2
Marcus-Breuers-MacBook-Pro:mysql marcusbreuer$ 
Danke schonmal vorab für jede Hilfe.

Gruß,
Marcus

Verfasst: 15. Juni 2011 06:40
von gboelter
Hallo Marcus,

ist zwar ein alter Thread, aber ich antworte trotzdem mal ...
Marcus Breuer hat geschrieben: ld: warning: in /usr/local/mysql/lib/libmysqlclient_r.dylib, file is not of required architecture
Hast Du moeglicherweise statt der 64-Bit die 32-Bit Version von MySQL installiert?

Verfasst: 15. Juni 2011 15:32
von Marcus Breuer
Hi,

vielen Dank für deine Antwort. Ich hatte das auch irgendwann raus bekommen, dass es bezüglich 32- und 64-bit Probleme gibt. Ich habe es irgendwann aber auch aufgegeben und mit SQLite wieter gemacht. Das hat voll und ganz gereicht. Dennoch vielen vielen Dank für deine Antwort.

Grüße,
Marcus