Mysql drivers built but qt can not find them
-
Hi, just try your qt-cmake command again, but this put this at the end:
-DCMAKE_OSX_ARCHITECTURES="arm64"
wrote on 16 Apr 2024, 19:52 last edited by@hskoglund
I still get the same resultld: warning: ignoring file '/usr/local/mysql-8.3.0-macos14-arm64/lib/libmysqlclient.23.dylib': found architecture 'arm64', required architecture 'x86_64'
-
wrote on 16 Apr 2024, 19:54 last edited by hskoglund
You need to nuke (delete) the previous build/directory
or do a new download and then try qt-cmake again (with -DCMAKE_OSX_ARCHITECTURES="arm64" added at the end) -
You need to nuke (delete) the previous build/directory
or do a new download and then try qt-cmake again (with -DCMAKE_OSX_ARCHITECTURES="arm64" added at the end)wrote on 16 Apr 2024, 19:59 last edited by DeadSo0ul@hskoglund If I do understand you correctly I had done it before running the command as the files built were easy to track
Ignore the directory where I build as I overkill the whole process for no reason
I did try to build in another directory but without success
-
wrote on 16 Apr 2024, 20:06 last edited by
No I mean delete all of the /Users/boyankiovtorov/Qt/6.7.0/Src/qtbase/src/plugins/sqldrivers directory
If you don't have a copy easiest is just to download the 6.7.0 source again. -
wrote on 16 Apr 2024, 20:11 last edited by
Here's how I built MySQL (some time ago :-) using Homebrew
Download Qt sources in ~/Downloads then do these commands:brew install mysql cd ~/Downloads/qt-everywhere-src-6.7.0/qtbase/src/plugins/sqldrivers ~/Qt/6.7.0/macos/bin/qt-cmake -DMySQL_LIBRARY=/usr/local/opt/mysql/lib/libmysqlclient.dylib -DMySQL_INCLUDE_DIR=/usr/local/opt/mysql/include/mysql -DCMAKE_OSX_ARCHITECTURES="arm64" . make
-
Here's how I built MySQL (some time ago :-) using Homebrew
Download Qt sources in ~/Downloads then do these commands:brew install mysql cd ~/Downloads/qt-everywhere-src-6.7.0/qtbase/src/plugins/sqldrivers ~/Qt/6.7.0/macos/bin/qt-cmake -DMySQL_LIBRARY=/usr/local/opt/mysql/lib/libmysqlclient.dylib -DMySQL_INCLUDE_DIR=/usr/local/opt/mysql/include/mysql -DCMAKE_OSX_ARCHITECTURES="arm64" . make
wrote on 16 Apr 2024, 20:33 last edited by@hskoglund
It was the same way I built the driver for 6.2 but still not workingcd ~/Downloads/qt-everywhere-src-6.7.0/qtbase/src/plugins/sqldrivers boyankiovtorov@Boyans-MacBook-Air sqldrivers % ~/Qt/6.7.0/macos/bin/qt-cmake -DMySQL_LIBRARY=/opt/homebrew/opt/mysql/lib/libmysqlclient.dylib -DMySQL_INCLUDE_DIR=/opt/homebrew/opt/mysql/include/mysql -DCMAKE_OSX_ARCHITECTURES="arm64" .
it gives a warning that ninja is recommended
CMake Warning at /Users/boyankiovtorov/Qt/6.7.0/macos/lib/cmake/Qt6/QtBuildHelpers.cmake:12 (message): The officially supported CMake generator for building Qt is Ninja / Ninja Multi-Config. You are using: 'Unix Makefiles' instead. Thus, you might encounter issues. Use at your own risk. Call Stack (most recent call first): /Users/boyankiovtorov/Qt/6.7.0/macos/lib/cmake/Qt6/QtBuildHelpers.cmake:381 (qt_internal_validate_cmake_generator) /Users/boyankiovtorov/Qt/6.7.0/macos/lib/cmake/Qt6/QtBuild.cmake:4 (qt_internal_setup_build_and_global_variables) /Users/boyankiovtorov/Qt/6.7.0/macos/lib/cmake/Qt6/QtSetup.cmake:6 (include) /Users/boyankiovtorov/Qt/6.7.0/macos/lib/cmake/Qt6/QtBuildRepoHelpers.cmake:21 (include) /Users/boyankiovtorov/Qt/6.7.0/macos/lib/cmake/Qt6/QtBuildRepoHelpers.cmake:112 (qt_build_internals_set_up_private_api) CMakeLists.txt:26 (qt_prepare_standalone_project)
but the error is still the same
[ 41%] Linking CXX shared module ../plugins/sqldrivers/libqsqlmysql.dylib ld: warning: ignoring file '/opt/homebrew/Cellar/mysql/8.3.0_1/lib/libmysqlclient.23.dylib': found architecture 'arm64', required architecture 'x86_64'
-
wrote on 16 Apr 2024, 20:47 last edited by
If you check the MySql dll with file, e.g.:
file /opt/homebrew/opt/mysql/lib/libmysqlclient.dylib
If it says "x86_64" then you need to download/install a dylib/dll with the same name but has the architecture "arm64"
-
If you check the MySql dll with file, e.g.:
file /opt/homebrew/opt/mysql/lib/libmysqlclient.dylib
If it says "x86_64" then you need to download/install a dylib/dll with the same name but has the architecture "arm64"
wrote on 16 Apr 2024, 20:54 last edited by@hskoglund It is arm64
/opt/homebrew/opt/mysql/lib/libmysqlclient.dylib: Mach-O 64-bit dynamically linked shared library arm64
-
wrote on 16 Apr 2024, 21:19 last edited by
Hi, indeed I just tried it myself and something's changed with 6.7.0, that switch -DCMAKE_OSX_ARCHITECTURES="arm64" does not seem to work anymore :-(
I remember that was a bug before and that you had to edit some cmake text file, i'll check... -
wrote on 16 Apr 2024, 22:02 last edited by
Hi, found it: https://forum.qt.io/topic/136231/mysql-plugin-on-m1-mac/10
Adding -DCMAKE_OSX_ARCHITECTURES="arm64" has not been sufficient for a looong time.
The good news is that for Qt 6.7.0 it's slightly easier. Anyway there are two things that has be fixed: build with Nnja and manually edit the Ninja build file before issuing the cmake --build .
So the qt-cmake command should be:
~/Qt/6.7.0/macos/bin/qt-cmake -GNinja -DMySQL_LIBRARY=/opt/homebrew/opt/mysql/lib/libmysqlclient.dylib -DMySQL_INCLUDE_DIR=/opt/homebrew/opt/mysql/include/mysql -DCMAKE_OSX_ARCHITECTURES="arm64" .Once it's done, do this magic command:
sed -i -e 's/-arch x86_64/-arch arm64/g' build.ninja
Then proceed with the usual:
cmake --build .
Don't forget to nuke the sqldrivers directory first :-)
-
Hi, found it: https://forum.qt.io/topic/136231/mysql-plugin-on-m1-mac/10
Adding -DCMAKE_OSX_ARCHITECTURES="arm64" has not been sufficient for a looong time.
The good news is that for Qt 6.7.0 it's slightly easier. Anyway there are two things that has be fixed: build with Nnja and manually edit the Ninja build file before issuing the cmake --build .
So the qt-cmake command should be:
~/Qt/6.7.0/macos/bin/qt-cmake -GNinja -DMySQL_LIBRARY=/opt/homebrew/opt/mysql/lib/libmysqlclient.dylib -DMySQL_INCLUDE_DIR=/opt/homebrew/opt/mysql/include/mysql -DCMAKE_OSX_ARCHITECTURES="arm64" .Once it's done, do this magic command:
sed -i -e 's/-arch x86_64/-arch arm64/g' build.ninja
Then proceed with the usual:
cmake --build .
Don't forget to nuke the sqldrivers directory first :-)
wrote on 16 Apr 2024, 22:59 last edited by@hskoglund
That worked! Thank you so much. -
-
-
21/22