Nominate our 2022 Qt Champions!

Error building 4.8.0 from source on Mac OSX Lion

  • OSX 10.7.3 with Xcode 4.2, trying to build Qt 4.8.0 from source using "./configure -arch x86" (I'm stuck in 32-bit because of QTKit/QuickTime APIs I need, and the pre-built Qt libs are 64-bit only). I also tried "./configure -arch x86 -arch x86_64" with the same result.

    The build was going ok for quite some time (over an hour) but then failed at this point. It seems to be a problem linking "libqsqlmysql_debug.dylib" for i386, but I'm not exactly sure.

    Any ideas? Should I update to XCode 4.3 (I've heard its very buggy)? Do I need more options in my Qt configure to get this to work? Thanks!

    g++ -headerpad_max_install_names -arch i386 -single_module -dynamiclib -Xarch_i386 -mmacosx-version-min=10.4 -o libqsqlmysql_debug.dylib .obj/debug-shared/main.o .obj/debug-shared/qsql_mysql.o .obj/debug-shared/moc_qsql_mysql.o -F/Users/jasonlivingston/Downloads/qt-everywhere-opensource-src-4.8.0/lib -L/Users/jasonlivingston/Downloads/qt-everywhere-opensource-src-4.8.0/lib -L/usr/local/mysql/lib -lmysqlclient_r -lpthread -framework QtSql -L/Users/jasonlivingston/Downloads/qt-everywhere-opensource-src-4.8.0/lib -F/Users/jasonlivingston/Downloads/qt-everywhere-opensource-src-4.8.0/lib -framework QtCore
    ld: warning: ignoring file /usr/local/mysql/lib/libmysqlclient_r.dylib, file was built for unsupported file format which is not the architecture being linked (i386)
    Undefined symbols for architecture i386:
    "_mysql_affected_rows", referenced from:
    QMYSQLResult::nextResult() in qsql_mysql.o
    QMYSQLResult::reset(QString const&) in qsql_mysql.o
    ld: symbol(s) not found for architecture i386
    collect2: ld returned 1 exit status
    make[4]: *** [../../../../plugins/sqldrivers/libqsqlmysql_debug.dylib] Error 1
    make[3]: *** [debug-all] Error 2
    make[2]: *** [sub-mysql-make_default] Error 2
    make[1]: *** [sub-sqldrivers-make_default] Error 2
    make: *** [sub-plugins-make_default-ordered] Error 2

  • The error message is quite clear here: You're building Qt for (at least) i386 architecture, but the mysql libs are built for some different architecture(s) (probably x86_64). You need to either get mysql for the needed architecture, or build Qt for the architecture of your mysql installation.

Log in to reply