Added QMysql plugin to Qt Creator project on MacOS Ventura 13.4
-
Please stop trying to reconfigure a full Qt build.
Just follow the instructions for building the driver directly as you did before, just drop the -G Ninja part. And please do that from a new empty build folder.
@SGaist Ok. I follow the instructions from your link and below is the result:
mikolajnawrocki@MacBook-Pro-Mikoaj ~ % cd /Users/mikolajnawrocki/Qt/6.5.0/macos/plugins/sqldrivers mikolajnawrocki@MacBook-Pro-Mikoaj sqldrivers % mkdir build-sqldrivers mikolajnawrocki@MacBook-Pro-Mikoaj sqldrivers % cd build-sqldrivers mikolajnawrocki@MacBook-Pro-Mikoaj build-sqldrivers % qt-cmake -G Ninja /Users/mikolajnawrocki/Qt/6.5.0/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=/Users/mikolajnawrocki/Qt/6.5.0/macos -DMySQL_INCLUDE_DIR="/usr/local/mysql/include" -DMySQL_LIBRARY="/usr/local/mysql/lib/libmysqlclient.dylib" zsh: command not found: qt-cmake
-
@SGaist Ok. I follow the instructions from your link and below is the result:
mikolajnawrocki@MacBook-Pro-Mikoaj ~ % cd /Users/mikolajnawrocki/Qt/6.5.0/macos/plugins/sqldrivers mikolajnawrocki@MacBook-Pro-Mikoaj sqldrivers % mkdir build-sqldrivers mikolajnawrocki@MacBook-Pro-Mikoaj sqldrivers % cd build-sqldrivers mikolajnawrocki@MacBook-Pro-Mikoaj build-sqldrivers % qt-cmake -G Ninja /Users/mikolajnawrocki/Qt/6.5.0/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=/Users/mikolajnawrocki/Qt/6.5.0/macos -DMySQL_INCLUDE_DIR="/usr/local/mysql/include" -DMySQL_LIBRARY="/usr/local/mysql/lib/libmysqlclient.dylib" zsh: command not found: qt-cmake
Use the full path to the qt-cmake executable.
-
@SGaist I got:
mikolajnawrocki@MacBook-Pro-Mikoaj build-sqldrivers % /Users/mikolajnawrocki/Qt/6.5.0/macos/bin/qt-cmake -G Ninja /Users/mikolajnawrocki/Qt/6.5.0/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=/Users/mikolajnawrocki/Qt/6.5.0/macos -DMySQL_INCLUDE_DIR="/usr/local/mysql/include" -DMySQL_LIBRARY="/usr/local/mysql/lib/libmysqlclient.dylib" CMake Error: CMake was unable to find a build program corresponding to "Ninja". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool. CMake Error: CMAKE_ASM_COMPILER not set, after EnableLanguage -- Configuring incomplete, errors occurred!
-
@SGaist I got:
mikolajnawrocki@MacBook-Pro-Mikoaj build-sqldrivers % /Users/mikolajnawrocki/Qt/6.5.0/macos/bin/qt-cmake -G Ninja /Users/mikolajnawrocki/Qt/6.5.0/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=/Users/mikolajnawrocki/Qt/6.5.0/macos -DMySQL_INCLUDE_DIR="/usr/local/mysql/include" -DMySQL_LIBRARY="/usr/local/mysql/lib/libmysqlclient.dylib" CMake Error: CMake was unable to find a build program corresponding to "Ninja". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool. CMake Error: CMAKE_ASM_COMPILER not set, after EnableLanguage -- Configuring incomplete, errors occurred!
Why did you add the Ninja stuff back ? I just wrote that you should use the full path to qt-cmake.
-
Why did you add the Ninja stuff back ? I just wrote that you should use the full path to qt-cmake.
@SGaist I am not sure I understand what you are talking about. But I input :
/Users/mikolajnawrocki/Qt/6.5.0/macos/bin/qt-cmake -G /Users/mikolajnawrocki/Qt/6.5.0/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=/Users/mikolajnawrocki/Qt/6.5.0/macos -DMySQL_INCLUDE_DIR="/usr/local/mysql/include" -DMySQL_LIBRARY="/usr/local/mysql/lib/libmysqlclient.dylib"
and I got:
CMake Error: Could not create named generator /Users/mikolajnawrocki/Qt/6.5.0/Src/qtbase/src/plugins/sqldrivers Generators * Unix Makefiles = Generates standard UNIX makefiles. Ninja = Generates build.ninja files. Ninja Multi-Config = Generates build-<Config>.ninja files. Watcom WMake = Generates Watcom WMake makefiles. Xcode = Generate Xcode project files. CodeBlocks - Ninja = Generates CodeBlocks project files. CodeBlocks - Unix Makefiles = Generates CodeBlocks project files. CodeLite - Ninja = Generates CodeLite project files. CodeLite - Unix Makefiles = Generates CodeLite project files. Eclipse CDT4 - Ninja = Generates Eclipse CDT 4.0 project files. Eclipse CDT4 - Unix Makefiles= Generates Eclipse CDT 4.0 project files. Kate - Ninja = Generates Kate project files. Kate - Unix Makefiles = Generates Kate project files. Sublime Text 2 - Ninja = Generates Sublime Text 2 project files. Sublime Text 2 - Unix Makefiles = Generates Sublime Text 2 project files. CMake Warning: No source or binary directory provided. Both will be assumed to be the same as the current working directory, but note that this warning will become a fatal error in future CMake releases.
-
Why did you add the Ninja stuff back ? I just wrote that you should use the full path to qt-cmake.
@SGaist Ok I was need some time to unsderstand. I input :
/Users/mikolajnawrocki/Qt/6.5.0/macos/bin/qt-cmake /Users/mikolajnawrocki/Qt/6.5.0/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=/Users/mikolajnawrocki/Qt/6.5.0/macos -DMySQL_INCLUDE_DIR="/usr/local/mysql/include" -DMySQL_LIBRARY="/usr/local/mysql/lib/libmysqlclient.dylib"
And I got:
-- The CXX compiler identification is AppleClang 14.0.3.14030022 -- The C compiler identification is AppleClang 14.0.3.14030022 -- The ASM compiler identification is Clang with GNU-like command-line -- Found assembler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/clang++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/clang - skipped -- Detecting C compile features -- Detecting C compile features - done -- Performing Test CMAKE_HAVE_LIBC_PTHREAD -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success -- Found Threads: TRUE -- Performing Test HAVE_STDATOMIC -- Performing Test HAVE_STDATOMIC - Success -- Found WrapAtomic: TRUE -- Configuration summary shown below. It has also been written to /Users/mikolajnawrocki/Qt/6.5.0/macos/plugins/sqldrivers/build-sqldrivers/config.summary -- Configure with --log-level=STATUS or higher to increase CMake's message verbosity. The log level does not persist across reconfigurations. -- Configure summary: Qt Sql Drivers: DB2 (IBM) .............................. no InterBase .............................. no MySql .................................. yes OCI (Oracle) ........................... no ODBC ................................... no PostgreSQL ............................. no SQLite ................................. yes Using system provided SQLite ......... no -- Configuring done (3.8s) -- Generating done (0.0s) -- Build files have been written to: /Users/mikolajnawrocki/Qt/6.5.0/macos/plugins/sqldrivers/build-sqldrivers
Then I input:
cmake --build .
and I got:
[ 9%] Automatic MOC for target QMYSQLDriverPlugin [ 9%] Built target QMYSQLDriverPlugin_autogen [ 18%] Building CXX object mysql/CMakeFiles/QMYSQLDriverPlugin.dir/QMYSQLDriverPlugin_autogen/mocs_compilation.cpp.o [ 27%] Building CXX object mysql/CMakeFiles/QMYSQLDriverPlugin.dir/main.cpp.o [ 36%] Building CXX object mysql/CMakeFiles/QMYSQLDriverPlugin.dir/qsql_mysql.cpp.o [ 45%] Linking CXX shared module ../plugins/sqldrivers/libqsqlmysql.dylib ld: warning: ignoring file /usr/local/mysql/lib/libmysqlclient.dylib, building for macOS-x86_64 but attempting to link with file built for macOS-arm64 Undefined symbols for architecture x86_64: "_mysql_affected_rows", referenced from: QMYSQLResult::reset(QString const&) in qsql_mysql.cpp.o QMYSQLResult::nextResult() in qsql_mysql.cpp.o "_mysql_character_set_name", referenced from: QMYSQLDriver::open(QString const&, QString const&, QString const&, QString const&, int, QString const&) (.cold.1) in qsql_mysql.cpp.o "_mysql_close", referenced from: QMYSQLDriver::open(QString const&, QString const&, QString const&, QString const&, int, QString const&) in qsql_mysql.cpp.o QMYSQLDriver::close() in qsql_mysql.cpp.o "_mysql_data_seek", referenced from: QMYSQLResult::fetch(int) in qsql_mysql.cpp.o "_mysql_errno", referenced from: qMakeError(QString const&, QSqlError::ErrorType, QMYSQLDriverPrivate const*) in qsql_mysql.cpp.o QMYSQLResult::record() const in qsql_mysql.cpp.o "_mysql_error", referenced from: qMakeError(QString const&, QSqlError::ErrorType, QMYSQLDriverPrivate const*) in qsql_mysql.cpp.o QMYSQLDriver::open(QString const&, QString const&, QString const&, QString const&, int, QString const&) (.cold.1) in qsql_mysql.cpp.o "_mysql_fetch_field", referenced from: QMYSQLResultPrivate::bindInValues() in qsql_mysql.cpp.o QMYSQLResult::record() const in qsql_mysql.cpp.o QMYSQLDriver::record(QString const&) const in qsql_mysql.cpp.o "_mysql_fetch_field_direct", referenced from: QMYSQLResult::reset(QString const&) in qsql_mysql.cpp.o QMYSQLResult::nextResult() in qsql_mysql.cpp.o "_mysql_fetch_lengths", referenced from: QMYSQLResult::data(int) in qsql_mysql.cpp.o "_mysql_fetch_row", referenced from: QMYSQLResult::fetch(int) in qsql_mysql.cpp.o QMYSQLResult::fetchNext() in qsql_mysql.cpp.o "_mysql_field_count", referenced from: QMYSQLResult::reset(QString const&) in qsql_mysql.cpp.o QMYSQLResult::nextResult() in qsql_mysql.cpp.o "_mysql_field_seek", referenced from: QMYSQLResult::record() const in qsql_mysql.cpp.o "_mysql_free_result", referenced from: QMYSQLResult::cleanup() in qsql_mysql.cpp.o QMYSQLResult::nextResult() in qsql_mysql.cpp.o QMYSQLDriver::record(QString const&) const in qsql_mysql.cpp.o "_mysql_init", referenced from: QMYSQLDriver::open(QString const&, QString const&, QString const&, QString const&, int, QString const&) in qsql_mysql.cpp.o "_mysql_insert_id", referenced from: QMYSQLResult::lastInsertId() const in qsql_mysql.cpp.o "_mysql_list_fields", referenced from: QMYSQLDriver::record(QString const&) const in qsql_mysql.cpp.o "_mysql_next_result", referenced from: QMYSQLResult::cleanup() in qsql_mysql.cpp.o QMYSQLResult::nextResult() in qsql_mysql.cpp.o "_mysql_num_fields", referenced from: QMYSQLResultPrivate::bindInValues() in qsql_mysql.cpp.o "_mysql_num_rows", referenced from: QMYSQLResult::fetchLast() in qsql_mysql.cpp.o QMYSQLResult::size() in qsql_mysql.cpp.o "_mysql_options", referenced from: setOptionString(MYSQL*, mysql_option, QStringView) in qsql_mysql.cpp.o setOptionInt(MYSQL*, mysql_option, QStringView) in qsql_mysql.cpp.o setOptionBool(MYSQL*, mysql_option, QStringView) in qsql_mysql.cpp.o "_mysql_query", referenced from: QMYSQLDriver::beginTransaction() in qsql_mysql.cpp.o QMYSQLDriver::commitTransaction() in qsql_mysql.cpp.o QMYSQLDriver::rollbackTransaction() in qsql_mysql.cpp.o "_mysql_real_connect", referenced from: QMYSQLDriver::open(QString const&, QString const&, QString const&, QString const&, int, QString const&) in qsql_mysql.cpp.o "_mysql_real_escape_string", referenced from: QMYSQLDriver::formatValue(QSqlField const&, bool) const in qsql_mysql.cpp.o "_mysql_real_query", referenced from: QMYSQLResult::reset(QString const&) in qsql_mysql.cpp.o "_mysql_select_db", referenced from: QMYSQLDriver::open(QString const&, QString const&, QString const&, QString const&, int, QString const&) in qsql_mysql.cpp.o "_mysql_server_end", referenced from: QMYSQLDriver::~QMYSQLDriver() in qsql_mysql.cpp.o QMYSQLDriver::~QMYSQLDriver() in qsql_mysql.cpp.o QMYSQLDriver::~QMYSQLDriver() in qsql_mysql.cpp.o "_mysql_server_init", referenced from: QMYSQLDriver::QMYSQLDriver(QObject*) in qsql_mysql.cpp.o QMYSQLDriver::QMYSQLDriver(MYSQL*, QObject*) in qsql_mysql.cpp.o "_mysql_set_character_set", referenced from: QMYSQLDriver::open(QString const&, QString const&, QString const&, QString const&, int, QString const&) in qsql_mysql.cpp.o "_mysql_stmt_affected_rows", referenced from: QMYSQLResult::exec() in qsql_mysql.cpp.o "_mysql_stmt_attr_set", referenced from: QMYSQLResult::exec() in qsql_mysql.cpp.o "_mysql_stmt_bind_param", referenced from: QMYSQLResult::exec() in qsql_mysql.cpp.o "_mysql_stmt_bind_result", referenced from: QMYSQLResult::exec() in qsql_mysql.cpp.o "_mysql_stmt_close", referenced from: QMYSQLResult::cleanup() in qsql_mysql.cpp.o QMYSQLDriver::open(QString const&, QString const&, QString const&, QString const&, int, QString const&) in qsql_mysql.cpp.o "_mysql_stmt_data_seek", referenced from: QMYSQLResult::fetch(int) in qsql_mysql.cpp.o "_mysql_stmt_errno", referenced from: qMakeStmtError(QString const&, QSqlError::ErrorType, MYSQL_STMT*) in qsql_mysql.cpp.o "_mysql_stmt_error", referenced from: qMakeStmtError(QString const&, QSqlError::ErrorType, MYSQL_STMT*) in qsql_mysql.cpp.o "_mysql_stmt_execute", referenced from: QMYSQLResult::exec() in qsql_mysql.cpp.o "_mysql_stmt_fetch", referenced from: QMYSQLResult::fetch(int) in qsql_mysql.cpp.o QMYSQLResult::fetchNext() in qsql_mysql.cpp.o "_mysql_stmt_free_result", referenced from: QMYSQLResult::detachFromResultSet() in qsql_mysql.cpp.o "_mysql_stmt_init", referenced from: QMYSQLResult::prepare(QString const&) in qsql_mysql.cpp.o QMYSQLDriver::open(QString const&, QString const&, QString const&, QString const&, int, QString const&) in qsql_mysql.cpp.o "_mysql_stmt_insert_id", referenced from: QMYSQLResult::lastInsertId() const in qsql_mysql.cpp.o "_mysql_stmt_num_rows", referenced from: QMYSQLResult::fetchLast() in qsql_mysql.cpp.o QMYSQLResult::size() in qsql_mysql.cpp.o "_mysql_stmt_param_count", referenced from: QMYSQLResult::prepare(QString const&) in qsql_mysql.cpp.o QMYSQLResult::exec() in qsql_mysql.cpp.o QMYSQLDriver::open(QString const&, QString const&, QString const&, QString const&, int, QString const&) in qsql_mysql.cpp.o "_mysql_stmt_prepare", referenced from: QMYSQLResult::prepare(QString const&) in qsql_mysql.cpp.o QMYSQLDriver::open(QString const&, QString const&, QString const&, QString const&, int, QString const&) in qsql_mysql.cpp.o "_mysql_stmt_reset", referenced from: QMYSQLResult::exec() in qsql_mysql.cpp.o "_mysql_stmt_result_metadata", referenced from: QMYSQLResultPrivate::bindInValues() in qsql_mysql.cpp.o "_mysql_stmt_store_result", referenced from: QMYSQLResult::exec() in qsql_mysql.cpp.o "_mysql_store_result", referenced from: QMYSQLResult::cleanup() in qsql_mysql.cpp.o QMYSQLResult::reset(QString const&) in qsql_mysql.cpp.o QMYSQLResult::nextResult() in qsql_mysql.cpp.o "_mysql_thread_end", referenced from: QMYSQLDriver::close() in qsql_mysql.cpp.o "_mysql_thread_init", referenced from: QMYSQLDriver::open(QString const&, QString const&, QString const&, QString const&, int, QString const&) in qsql_mysql.cpp.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make[2]: *** [plugins/sqldrivers/libqsqlmysql.dylib] Error 1 make[1]: *** [mysql/CMakeFiles/QMYSQLDriverPlugin.dir/all] Error 2 make: *** [all] Error 2
What now?
-
@SGaist Ok I was need some time to unsderstand. I input :
/Users/mikolajnawrocki/Qt/6.5.0/macos/bin/qt-cmake /Users/mikolajnawrocki/Qt/6.5.0/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=/Users/mikolajnawrocki/Qt/6.5.0/macos -DMySQL_INCLUDE_DIR="/usr/local/mysql/include" -DMySQL_LIBRARY="/usr/local/mysql/lib/libmysqlclient.dylib"
And I got:
-- The CXX compiler identification is AppleClang 14.0.3.14030022 -- The C compiler identification is AppleClang 14.0.3.14030022 -- The ASM compiler identification is Clang with GNU-like command-line -- Found assembler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/clang++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/clang - skipped -- Detecting C compile features -- Detecting C compile features - done -- Performing Test CMAKE_HAVE_LIBC_PTHREAD -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success -- Found Threads: TRUE -- Performing Test HAVE_STDATOMIC -- Performing Test HAVE_STDATOMIC - Success -- Found WrapAtomic: TRUE -- Configuration summary shown below. It has also been written to /Users/mikolajnawrocki/Qt/6.5.0/macos/plugins/sqldrivers/build-sqldrivers/config.summary -- Configure with --log-level=STATUS or higher to increase CMake's message verbosity. The log level does not persist across reconfigurations. -- Configure summary: Qt Sql Drivers: DB2 (IBM) .............................. no InterBase .............................. no MySql .................................. yes OCI (Oracle) ........................... no ODBC ................................... no PostgreSQL ............................. no SQLite ................................. yes Using system provided SQLite ......... no -- Configuring done (3.8s) -- Generating done (0.0s) -- Build files have been written to: /Users/mikolajnawrocki/Qt/6.5.0/macos/plugins/sqldrivers/build-sqldrivers
Then I input:
cmake --build .
and I got:
[ 9%] Automatic MOC for target QMYSQLDriverPlugin [ 9%] Built target QMYSQLDriverPlugin_autogen [ 18%] Building CXX object mysql/CMakeFiles/QMYSQLDriverPlugin.dir/QMYSQLDriverPlugin_autogen/mocs_compilation.cpp.o [ 27%] Building CXX object mysql/CMakeFiles/QMYSQLDriverPlugin.dir/main.cpp.o [ 36%] Building CXX object mysql/CMakeFiles/QMYSQLDriverPlugin.dir/qsql_mysql.cpp.o [ 45%] Linking CXX shared module ../plugins/sqldrivers/libqsqlmysql.dylib ld: warning: ignoring file /usr/local/mysql/lib/libmysqlclient.dylib, building for macOS-x86_64 but attempting to link with file built for macOS-arm64 Undefined symbols for architecture x86_64: "_mysql_affected_rows", referenced from: QMYSQLResult::reset(QString const&) in qsql_mysql.cpp.o QMYSQLResult::nextResult() in qsql_mysql.cpp.o "_mysql_character_set_name", referenced from: QMYSQLDriver::open(QString const&, QString const&, QString const&, QString const&, int, QString const&) (.cold.1) in qsql_mysql.cpp.o "_mysql_close", referenced from: QMYSQLDriver::open(QString const&, QString const&, QString const&, QString const&, int, QString const&) in qsql_mysql.cpp.o QMYSQLDriver::close() in qsql_mysql.cpp.o "_mysql_data_seek", referenced from: QMYSQLResult::fetch(int) in qsql_mysql.cpp.o "_mysql_errno", referenced from: qMakeError(QString const&, QSqlError::ErrorType, QMYSQLDriverPrivate const*) in qsql_mysql.cpp.o QMYSQLResult::record() const in qsql_mysql.cpp.o "_mysql_error", referenced from: qMakeError(QString const&, QSqlError::ErrorType, QMYSQLDriverPrivate const*) in qsql_mysql.cpp.o QMYSQLDriver::open(QString const&, QString const&, QString const&, QString const&, int, QString const&) (.cold.1) in qsql_mysql.cpp.o "_mysql_fetch_field", referenced from: QMYSQLResultPrivate::bindInValues() in qsql_mysql.cpp.o QMYSQLResult::record() const in qsql_mysql.cpp.o QMYSQLDriver::record(QString const&) const in qsql_mysql.cpp.o "_mysql_fetch_field_direct", referenced from: QMYSQLResult::reset(QString const&) in qsql_mysql.cpp.o QMYSQLResult::nextResult() in qsql_mysql.cpp.o "_mysql_fetch_lengths", referenced from: QMYSQLResult::data(int) in qsql_mysql.cpp.o "_mysql_fetch_row", referenced from: QMYSQLResult::fetch(int) in qsql_mysql.cpp.o QMYSQLResult::fetchNext() in qsql_mysql.cpp.o "_mysql_field_count", referenced from: QMYSQLResult::reset(QString const&) in qsql_mysql.cpp.o QMYSQLResult::nextResult() in qsql_mysql.cpp.o "_mysql_field_seek", referenced from: QMYSQLResult::record() const in qsql_mysql.cpp.o "_mysql_free_result", referenced from: QMYSQLResult::cleanup() in qsql_mysql.cpp.o QMYSQLResult::nextResult() in qsql_mysql.cpp.o QMYSQLDriver::record(QString const&) const in qsql_mysql.cpp.o "_mysql_init", referenced from: QMYSQLDriver::open(QString const&, QString const&, QString const&, QString const&, int, QString const&) in qsql_mysql.cpp.o "_mysql_insert_id", referenced from: QMYSQLResult::lastInsertId() const in qsql_mysql.cpp.o "_mysql_list_fields", referenced from: QMYSQLDriver::record(QString const&) const in qsql_mysql.cpp.o "_mysql_next_result", referenced from: QMYSQLResult::cleanup() in qsql_mysql.cpp.o QMYSQLResult::nextResult() in qsql_mysql.cpp.o "_mysql_num_fields", referenced from: QMYSQLResultPrivate::bindInValues() in qsql_mysql.cpp.o "_mysql_num_rows", referenced from: QMYSQLResult::fetchLast() in qsql_mysql.cpp.o QMYSQLResult::size() in qsql_mysql.cpp.o "_mysql_options", referenced from: setOptionString(MYSQL*, mysql_option, QStringView) in qsql_mysql.cpp.o setOptionInt(MYSQL*, mysql_option, QStringView) in qsql_mysql.cpp.o setOptionBool(MYSQL*, mysql_option, QStringView) in qsql_mysql.cpp.o "_mysql_query", referenced from: QMYSQLDriver::beginTransaction() in qsql_mysql.cpp.o QMYSQLDriver::commitTransaction() in qsql_mysql.cpp.o QMYSQLDriver::rollbackTransaction() in qsql_mysql.cpp.o "_mysql_real_connect", referenced from: QMYSQLDriver::open(QString const&, QString const&, QString const&, QString const&, int, QString const&) in qsql_mysql.cpp.o "_mysql_real_escape_string", referenced from: QMYSQLDriver::formatValue(QSqlField const&, bool) const in qsql_mysql.cpp.o "_mysql_real_query", referenced from: QMYSQLResult::reset(QString const&) in qsql_mysql.cpp.o "_mysql_select_db", referenced from: QMYSQLDriver::open(QString const&, QString const&, QString const&, QString const&, int, QString const&) in qsql_mysql.cpp.o "_mysql_server_end", referenced from: QMYSQLDriver::~QMYSQLDriver() in qsql_mysql.cpp.o QMYSQLDriver::~QMYSQLDriver() in qsql_mysql.cpp.o QMYSQLDriver::~QMYSQLDriver() in qsql_mysql.cpp.o "_mysql_server_init", referenced from: QMYSQLDriver::QMYSQLDriver(QObject*) in qsql_mysql.cpp.o QMYSQLDriver::QMYSQLDriver(MYSQL*, QObject*) in qsql_mysql.cpp.o "_mysql_set_character_set", referenced from: QMYSQLDriver::open(QString const&, QString const&, QString const&, QString const&, int, QString const&) in qsql_mysql.cpp.o "_mysql_stmt_affected_rows", referenced from: QMYSQLResult::exec() in qsql_mysql.cpp.o "_mysql_stmt_attr_set", referenced from: QMYSQLResult::exec() in qsql_mysql.cpp.o "_mysql_stmt_bind_param", referenced from: QMYSQLResult::exec() in qsql_mysql.cpp.o "_mysql_stmt_bind_result", referenced from: QMYSQLResult::exec() in qsql_mysql.cpp.o "_mysql_stmt_close", referenced from: QMYSQLResult::cleanup() in qsql_mysql.cpp.o QMYSQLDriver::open(QString const&, QString const&, QString const&, QString const&, int, QString const&) in qsql_mysql.cpp.o "_mysql_stmt_data_seek", referenced from: QMYSQLResult::fetch(int) in qsql_mysql.cpp.o "_mysql_stmt_errno", referenced from: qMakeStmtError(QString const&, QSqlError::ErrorType, MYSQL_STMT*) in qsql_mysql.cpp.o "_mysql_stmt_error", referenced from: qMakeStmtError(QString const&, QSqlError::ErrorType, MYSQL_STMT*) in qsql_mysql.cpp.o "_mysql_stmt_execute", referenced from: QMYSQLResult::exec() in qsql_mysql.cpp.o "_mysql_stmt_fetch", referenced from: QMYSQLResult::fetch(int) in qsql_mysql.cpp.o QMYSQLResult::fetchNext() in qsql_mysql.cpp.o "_mysql_stmt_free_result", referenced from: QMYSQLResult::detachFromResultSet() in qsql_mysql.cpp.o "_mysql_stmt_init", referenced from: QMYSQLResult::prepare(QString const&) in qsql_mysql.cpp.o QMYSQLDriver::open(QString const&, QString const&, QString const&, QString const&, int, QString const&) in qsql_mysql.cpp.o "_mysql_stmt_insert_id", referenced from: QMYSQLResult::lastInsertId() const in qsql_mysql.cpp.o "_mysql_stmt_num_rows", referenced from: QMYSQLResult::fetchLast() in qsql_mysql.cpp.o QMYSQLResult::size() in qsql_mysql.cpp.o "_mysql_stmt_param_count", referenced from: QMYSQLResult::prepare(QString const&) in qsql_mysql.cpp.o QMYSQLResult::exec() in qsql_mysql.cpp.o QMYSQLDriver::open(QString const&, QString const&, QString const&, QString const&, int, QString const&) in qsql_mysql.cpp.o "_mysql_stmt_prepare", referenced from: QMYSQLResult::prepare(QString const&) in qsql_mysql.cpp.o QMYSQLDriver::open(QString const&, QString const&, QString const&, QString const&, int, QString const&) in qsql_mysql.cpp.o "_mysql_stmt_reset", referenced from: QMYSQLResult::exec() in qsql_mysql.cpp.o "_mysql_stmt_result_metadata", referenced from: QMYSQLResultPrivate::bindInValues() in qsql_mysql.cpp.o "_mysql_stmt_store_result", referenced from: QMYSQLResult::exec() in qsql_mysql.cpp.o "_mysql_store_result", referenced from: QMYSQLResult::cleanup() in qsql_mysql.cpp.o QMYSQLResult::reset(QString const&) in qsql_mysql.cpp.o QMYSQLResult::nextResult() in qsql_mysql.cpp.o "_mysql_thread_end", referenced from: QMYSQLDriver::close() in qsql_mysql.cpp.o "_mysql_thread_init", referenced from: QMYSQLDriver::open(QString const&, QString const&, QString const&, QString const&, int, QString const&) in qsql_mysql.cpp.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make[2]: *** [plugins/sqldrivers/libqsqlmysql.dylib] Error 1 make[1]: *** [mysql/CMakeFiles/QMYSQLDriverPlugin.dir/all] Error 2 make: *** [all] Error 2
What now?
Looks like you installed an arm only version of the MySQL library while working with an x86_64 build of Qt.
What is your machine ?
-
Looks like you installed an arm only version of the MySQL library while working with an x86_64 build of Qt.
What is your machine ?
@SGaist Information below:
I supposed I installed Qt arm64 version... So should I Install MySQL x86_64?
-
Looks like you installed an arm only version of the MySQL library while working with an x86_64 build of Qt.
What is your machine ?
@SGaist Ok, I uninstall MySQL for amr64 and install x86. Run in terminal what I need and I got no error. But when I open project in Qt Creator I got this:
-
@SGaist Ok, I uninstall MySQL for amr64 and install x86. Run in terminal what I need and I got no error. But when I open project in Qt Creator I got this:
Unless I am mistaken, your Qt build is a universal build. I.e. it contains both the x86_64 and arm64 symbols. Hence you need to also use a universal MySQL library to link to. If you only have separated libraries for each architecture, you can use lipo to combine them and the use that one.
-
Unless I am mistaken, your Qt build is a universal build. I.e. it contains both the x86_64 and arm64 symbols. Hence you need to also use a universal MySQL library to link to. If you only have separated libraries for each architecture, you can use lipo to combine them and the use that one.
@SGaist Ok. I will try and I let you know.
-
Unless I am mistaken, your Qt build is a universal build. I.e. it contains both the x86_64 and arm64 symbols. Hence you need to also use a universal MySQL library to link to. If you only have separated libraries for each architecture, you can use lipo to combine them and the use that one.
This post is deleted! -
Unless I am mistaken, your Qt build is a universal build. I.e. it contains both the x86_64 and arm64 symbols. Hence you need to also use a universal MySQL library to link to. If you only have separated libraries for each architecture, you can use lipo to combine them and the use that one.
@SGaist I find command line for lipo. I copied x86 and arm folders on my desktop and input this in terminal:
lipo /Users/mikolajnawrocki/Desktop/mysql-8.0.33-macos13-x86_64/lib/libmysqlclient.dylib /Users/mikolajnawrocki/Desktop/mysql-8.0.33-macos13-arm64/lib/libmysqlclient.dylib -output /Users/mikolajnawrocki/Desktop/universal/libmysqlclient.dylib -create
In the folder appeared much bigger libmysqlclient.dylib. So I guess fusion was completed.
Then I copied new file to /usr/local/mysql/lib/libmysqlclient.dylib" and paste it. Then I run Qt Creator. The last errors disappeared. But I still got error with mysql plugin.
Below is my folder structure of build-sqldrivers
-
@SGaist I find command line for lipo. I copied x86 and arm folders on my desktop and input this in terminal:
lipo /Users/mikolajnawrocki/Desktop/mysql-8.0.33-macos13-x86_64/lib/libmysqlclient.dylib /Users/mikolajnawrocki/Desktop/mysql-8.0.33-macos13-arm64/lib/libmysqlclient.dylib -output /Users/mikolajnawrocki/Desktop/universal/libmysqlclient.dylib -create
In the folder appeared much bigger libmysqlclient.dylib. So I guess fusion was completed.
Then I copied new file to /usr/local/mysql/lib/libmysqlclient.dylib" and paste it. Then I run Qt Creator. The last errors disappeared. But I still got error with mysql plugin.
Below is my folder structure of build-sqldrivers
If you copy the file on the command line, it will, by default, copy the content of the pointed file and thus you will have the library you want.
-
If you copy the file on the command line, it will, by default, copy the content of the pointed file and thus you will have the library you want.
@SGaist So what I should doing now? The universal libqmysqlclient.dylib is in the correct place. I got no errors in Terminal. But I got one in Qt Creator.
-
@SGaist So what I should doing now? The universal libqmysqlclient.dylib is in the correct place. I got no errors in Terminal. But I got one in Qt Creator.
Which error are you getting now ?
-
@SGaist Error below
QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QODBC QPSQL
-
@SGaist Error below
QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QODBC QPSQL
Did you ensure that the plugin was put in the plugins folder ? Did you build it for both debug and release ? Did you copy both variants to the appropriate subfolder ?
-
Did you ensure that the plugin was put in the plugins folder ? Did you build it for both debug and release ? Did you copy both variants to the appropriate subfolder ?
@SGaist I think I did.
Copied files from
/Users/mikolajnawrocki/Qt/6.5.0/macos/plugins/sqldrivers/build-sqldrivers/plugins/sqldrivers
to
/Users/mikolajnawrocki/Qt/6.5.0/macos/plugins/sqldrivers
Builded debug and release
-
@SGaist I think I did.
Copied files from
/Users/mikolajnawrocki/Qt/6.5.0/macos/plugins/sqldrivers/build-sqldrivers/plugins/sqldrivers
to
/Users/mikolajnawrocki/Qt/6.5.0/macos/plugins/sqldrivers
Builded debug and release
As already requested, stop working in the installation tree, create the build dir completely outside of it.
Start your application with the
QT_DEBUG_PLUGINS
environment variable set to 1 to see what is happening with the plugins.