Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. QMYSQL plugin (libqsqlmysql.dylib) fails with macOS on Apple Silicon M1
Forum Updated to NodeBB v4.3 + New Features

QMYSQL plugin (libqsqlmysql.dylib) fails with macOS on Apple Silicon M1

Scheduled Pinned Locked Moved Solved General and Desktop
12 Posts 3 Posters 1.1k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • xtophX Offline
    xtophX Offline
    xtoph
    wrote on last edited by xtoph
    #3

    Thanks for your fast reply!

    Qt 6.2.3 (arm64-little_endian-lp64 shared (dynamic) release build; by Clang 13.0.0 (clang-1300.0.29.3) (Apple)) on "cocoa" 
    OS: macOS 11.6 [darwin version 20.6.0]
    
    Architecture: arm64; features: Neon
    

    I also need to mention that I tried before lib and includes from mysql-8.0.29-macos12-arm64 but then cmake failed to build:

    cmake --build . -v
    [1/1] : && /Library/Developer/CommandLineTools/usr/bin/c++ -g -DNDEBUG -O2 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk -mmacosx-version-min=11 -bundle -Wl,-headerpad_max_install_names -Wl,-undefined,error -fapplication-extension -o plugins/sqldrivers/libqsqlmysql.dylib mysql/CMakeFiles/QMYSQLDriverPlugin.dir/QMYSQLDriverPlugin_autogen/mocs_compilation.cpp.o mysql/CMakeFiles/QMYSQLDriverPlugin.dir/main.cpp.o mysql/CMakeFiles/QMYSQLDriverPlugin.dir/qsql_mysql.cpp.o  -Wl,-rpath,/Users/myname/Qt/6.2.4/macos/plugins/build-sqldrivers -Wl,-rpath,/Users/myname/Qt/6.2.4/macos/lib  libmysqlclient.21.dylib  /Users/myname/Qt/6.2.4/macos/lib/QtSql.framework/Versions/A/QtSql  /Users/myname/Qt/6.2.4/macos/lib/QtCore.framework/Versions/A/QtCore  -framework DiskArbitration  -framework IOKit && cd /Users/myname/Qt/6.2.4/macos/plugins/build-sqldrivers/mysql && /opt/local/bin/cmake -E make_directory /Users/myname/Qt/6.2.4/macos/plugins/build-sqldrivers/plugins/sqldrivers/libqsqlmysql.dylib.dSYM/Contents/Resources/DWARF && /opt/local/bin/cmake -E copy Info.dSYM.plist /Users/myname/Qt/6.2.4/macos/plugins/build-sqldrivers/plugins/sqldrivers/libqsqlmysql.dylib.dSYM/Contents/Info.plist && /usr/bin/dsymutil /Users/myname/Qt/6.2.4/macos/plugins/build-sqldrivers/plugins/sqldrivers/libqsqlmysql.dylib --flat -o /Users/myname/Qt/6.2.4/macos/plugins/build-sqldrivers/plugins/sqldrivers/libqsqlmysql.dylib.dSYM/Contents/Resources/DWARF/qsqlmysql && /Library/Developer/CommandLineTools/usr/bin/strip -S /Users/myname/Qt/6.2.4/macos/plugins/build-sqldrivers/plugins/sqldrivers/libqsqlmysql.dylib && chmod -x /Users/myname/Qt/6.2.4/macos/plugins/build-sqldrivers/plugins/sqldrivers/libqsqlmysql.dylib.dSYM/Contents/Resources/DWARF/qsqlmysql
    FAILED: plugins/sqldrivers/libqsqlmysql.dylib 
    : && /Library/Developer/CommandLineTools/usr/bin/c++ -g -DNDEBUG -O2 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk -mmacosx-version-min=11 -bundle -Wl,-headerpad_max_install_names -Wl,-undefined,error -fapplication-extension -o plugins/sqldrivers/libqsqlmysql.dylib mysql/CMakeFiles/QMYSQLDriverPlugin.dir/QMYSQLDriverPlugin_autogen/mocs_compilation.cpp.o mysql/CMakeFiles/QMYSQLDriverPlugin.dir/main.cpp.o mysql/CMakeFiles/QMYSQLDriverPlugin.dir/qsql_mysql.cpp.o  -Wl,-rpath,/Users/myname/Qt/6.2.4/macos/plugins/build-sqldrivers -Wl,-rpath,/Users/myname/Qt/6.2.4/macos/lib  libmysqlclient.21.dylib  /Users/myname/Qt/6.2.4/macos/lib/QtSql.framework/Versions/A/QtSql  /Users/myname/Qt/6.2.4/macos/lib/QtCore.framework/Versions/A/QtCore  -framework DiskArbitration  -framework IOKit && cd /Users/myname/Qt/6.2.4/macos/plugins/build-sqldrivers/mysql && /opt/local/bin/cmake -E make_directory /Users/myname/Qt/6.2.4/macos/plugins/build-sqldrivers/plugins/sqldrivers/libqsqlmysql.dylib.dSYM/Contents/Resources/DWARF && /opt/local/bin/cmake -E copy Info.dSYM.plist /Users/myname/Qt/6.2.4/macos/plugins/build-sqldrivers/plugins/sqldrivers/libqsqlmysql.dylib.dSYM/Contents/Info.plist && /usr/bin/dsymutil /Users/myname/Qt/6.2.4/macos/plugins/build-sqldrivers/plugins/sqldrivers/libqsqlmysql.dylib --flat -o /Users/myname/Qt/6.2.4/macos/plugins/build-sqldrivers/plugins/sqldrivers/libqsqlmysql.dylib.dSYM/Contents/Resources/DWARF/qsqlmysql && /Library/Developer/CommandLineTools/usr/bin/strip -S /Users/myname/Qt/6.2.4/macos/plugins/build-sqldrivers/plugins/sqldrivers/libqsqlmysql.dylib && chmod -x /Users/myname/Qt/6.2.4/macos/plugins/build-sqldrivers/plugins/sqldrivers/libqsqlmysql.dylib.dSYM/Contents/Resources/DWARF/qsqlmysql
    ld: warning: ignoring file libmysqlclient.21.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
     ... (many more of that kind)
    ld: symbol(s) not found for architecture x86_64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    ninja: build stopped: subcommand failed.
    

    I have also tried qt-make with -DCMAKE_OSX_ARCHITECTURES=arm64. No change.

    This looked to me like it still needs x86_64.

    jsulmJ 1 Reply Last reply
    0
    • xtophX xtoph

      Thanks for your fast reply!

      Qt 6.2.3 (arm64-little_endian-lp64 shared (dynamic) release build; by Clang 13.0.0 (clang-1300.0.29.3) (Apple)) on "cocoa" 
      OS: macOS 11.6 [darwin version 20.6.0]
      
      Architecture: arm64; features: Neon
      

      I also need to mention that I tried before lib and includes from mysql-8.0.29-macos12-arm64 but then cmake failed to build:

      cmake --build . -v
      [1/1] : && /Library/Developer/CommandLineTools/usr/bin/c++ -g -DNDEBUG -O2 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk -mmacosx-version-min=11 -bundle -Wl,-headerpad_max_install_names -Wl,-undefined,error -fapplication-extension -o plugins/sqldrivers/libqsqlmysql.dylib mysql/CMakeFiles/QMYSQLDriverPlugin.dir/QMYSQLDriverPlugin_autogen/mocs_compilation.cpp.o mysql/CMakeFiles/QMYSQLDriverPlugin.dir/main.cpp.o mysql/CMakeFiles/QMYSQLDriverPlugin.dir/qsql_mysql.cpp.o  -Wl,-rpath,/Users/myname/Qt/6.2.4/macos/plugins/build-sqldrivers -Wl,-rpath,/Users/myname/Qt/6.2.4/macos/lib  libmysqlclient.21.dylib  /Users/myname/Qt/6.2.4/macos/lib/QtSql.framework/Versions/A/QtSql  /Users/myname/Qt/6.2.4/macos/lib/QtCore.framework/Versions/A/QtCore  -framework DiskArbitration  -framework IOKit && cd /Users/myname/Qt/6.2.4/macos/plugins/build-sqldrivers/mysql && /opt/local/bin/cmake -E make_directory /Users/myname/Qt/6.2.4/macos/plugins/build-sqldrivers/plugins/sqldrivers/libqsqlmysql.dylib.dSYM/Contents/Resources/DWARF && /opt/local/bin/cmake -E copy Info.dSYM.plist /Users/myname/Qt/6.2.4/macos/plugins/build-sqldrivers/plugins/sqldrivers/libqsqlmysql.dylib.dSYM/Contents/Info.plist && /usr/bin/dsymutil /Users/myname/Qt/6.2.4/macos/plugins/build-sqldrivers/plugins/sqldrivers/libqsqlmysql.dylib --flat -o /Users/myname/Qt/6.2.4/macos/plugins/build-sqldrivers/plugins/sqldrivers/libqsqlmysql.dylib.dSYM/Contents/Resources/DWARF/qsqlmysql && /Library/Developer/CommandLineTools/usr/bin/strip -S /Users/myname/Qt/6.2.4/macos/plugins/build-sqldrivers/plugins/sqldrivers/libqsqlmysql.dylib && chmod -x /Users/myname/Qt/6.2.4/macos/plugins/build-sqldrivers/plugins/sqldrivers/libqsqlmysql.dylib.dSYM/Contents/Resources/DWARF/qsqlmysql
      FAILED: plugins/sqldrivers/libqsqlmysql.dylib 
      : && /Library/Developer/CommandLineTools/usr/bin/c++ -g -DNDEBUG -O2 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk -mmacosx-version-min=11 -bundle -Wl,-headerpad_max_install_names -Wl,-undefined,error -fapplication-extension -o plugins/sqldrivers/libqsqlmysql.dylib mysql/CMakeFiles/QMYSQLDriverPlugin.dir/QMYSQLDriverPlugin_autogen/mocs_compilation.cpp.o mysql/CMakeFiles/QMYSQLDriverPlugin.dir/main.cpp.o mysql/CMakeFiles/QMYSQLDriverPlugin.dir/qsql_mysql.cpp.o  -Wl,-rpath,/Users/myname/Qt/6.2.4/macos/plugins/build-sqldrivers -Wl,-rpath,/Users/myname/Qt/6.2.4/macos/lib  libmysqlclient.21.dylib  /Users/myname/Qt/6.2.4/macos/lib/QtSql.framework/Versions/A/QtSql  /Users/myname/Qt/6.2.4/macos/lib/QtCore.framework/Versions/A/QtCore  -framework DiskArbitration  -framework IOKit && cd /Users/myname/Qt/6.2.4/macos/plugins/build-sqldrivers/mysql && /opt/local/bin/cmake -E make_directory /Users/myname/Qt/6.2.4/macos/plugins/build-sqldrivers/plugins/sqldrivers/libqsqlmysql.dylib.dSYM/Contents/Resources/DWARF && /opt/local/bin/cmake -E copy Info.dSYM.plist /Users/myname/Qt/6.2.4/macos/plugins/build-sqldrivers/plugins/sqldrivers/libqsqlmysql.dylib.dSYM/Contents/Info.plist && /usr/bin/dsymutil /Users/myname/Qt/6.2.4/macos/plugins/build-sqldrivers/plugins/sqldrivers/libqsqlmysql.dylib --flat -o /Users/myname/Qt/6.2.4/macos/plugins/build-sqldrivers/plugins/sqldrivers/libqsqlmysql.dylib.dSYM/Contents/Resources/DWARF/qsqlmysql && /Library/Developer/CommandLineTools/usr/bin/strip -S /Users/myname/Qt/6.2.4/macos/plugins/build-sqldrivers/plugins/sqldrivers/libqsqlmysql.dylib && chmod -x /Users/myname/Qt/6.2.4/macos/plugins/build-sqldrivers/plugins/sqldrivers/libqsqlmysql.dylib.dSYM/Contents/Resources/DWARF/qsqlmysql
      ld: warning: ignoring file libmysqlclient.21.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
       ... (many more of that kind)
      ld: symbol(s) not found for architecture x86_64
      clang: error: linker command failed with exit code 1 (use -v to see invocation)
      ninja: build stopped: subcommand failed.
      

      I have also tried qt-make with -DCMAKE_OSX_ARCHITECTURES=arm64. No change.

      This looked to me like it still needs x86_64.

      jsulmJ Offline
      jsulmJ Offline
      jsulm
      Lifetime Qt Champion
      wrote on last edited by
      #4

      @xtoph said in QMYSQL plugin (libqsqlmysql.dylib) fails with macOS on Apple Silicon M1:

      ld: warning: ignoring file libmysqlclient.21.dylib, building for macOS-x86_64 but attempting to link with file built for macOS-arm64

      Apparently you tried to build Qt for x86_64 with ARM version of MySQL!
      Please make sure you use proper MySQL client library...

      https://forum.qt.io/topic/113070/qt-code-of-conduct

      1 Reply Last reply
      0
      • xtophX Offline
        xtophX Offline
        xtoph
        wrote on last edited by
        #5

        Assuming that my version of Qt is correct, how can I build the plugin correctly? Picking a different version from MySQL apparently didn't make a difference.

        jsulmJ 1 Reply Last reply
        0
        • xtophX xtoph

          Assuming that my version of Qt is correct, how can I build the plugin correctly? Picking a different version from MySQL apparently didn't make a difference.

          jsulmJ Offline
          jsulmJ Offline
          jsulm
          Lifetime Qt Champion
          wrote on last edited by
          #6

          @xtoph As I said: use MySQL client library built for same architecture as your Qt (either both x86_64 or both ARM64).

          https://forum.qt.io/topic/113070/qt-code-of-conduct

          1 Reply Last reply
          0
          • xtophX Offline
            xtophX Offline
            xtoph
            wrote on last edited by
            #7

            Yes. I tried both. The one mysql-8.0.29-macos12-arm64 failed to build. (see my second post above)

            jsulmJ 1 Reply Last reply
            0
            • xtophX xtoph

              Yes. I tried both. The one mysql-8.0.29-macos12-arm64 failed to build. (see my second post above)

              jsulmJ Offline
              jsulmJ Offline
              jsulm
              Lifetime Qt Champion
              wrote on last edited by jsulm
              #8

              @xtoph I already replied to that post and told you that you were mixing two architectures (as you can clearly see from the error). Please m ake sure you do not mich different architectures.

              https://forum.qt.io/topic/113070/qt-code-of-conduct

              xtophX 1 Reply Last reply
              0
              • jsulmJ jsulm

                @xtoph I already replied to that post and told you that you were mixing two architectures (as you can clearly see from the error). Please m ake sure you do not mich different architectures.

                xtophX Offline
                xtophX Offline
                xtoph
                wrote on last edited by
                #9

                @jsulm Just to summarize, maybe I misunderstand: I have Qt for arm64 and I used MySQL for arm64. Both are for the same architecture, so I am not not mixing anything, as far as I can see. Do you mean that there is another component involved that introduces a different architecture?
                The question is, how to successfully run cmake --build. Do you have any hint where to search?

                jsulmJ 1 Reply Last reply
                0
                • xtophX xtoph

                  @jsulm Just to summarize, maybe I misunderstand: I have Qt for arm64 and I used MySQL for arm64. Both are for the same architecture, so I am not not mixing anything, as far as I can see. Do you mean that there is another component involved that introduces a different architecture?
                  The question is, how to successfully run cmake --build. Do you have any hint where to search?

                  jsulmJ Offline
                  jsulmJ Offline
                  jsulm
                  Lifetime Qt Champion
                  wrote on last edited by
                  #10

                  @xtoph This warning contradicts with what you claim:

                  ld: warning: ignoring file libmysqlclient.21.dylib, building for macOS-x86_64 but attempting to link with file built for macOS-arm64
                  

                  So, you ARE mixing architectures...

                  https://forum.qt.io/topic/113070/qt-code-of-conduct

                  1 Reply Last reply
                  0
                  • hskoglundH Offline
                    hskoglundH Offline
                    hskoglund
                    wrote on last edited by
                    #11

                    Hi, you are on the right track specifying -DCMAKE_OSX_ARCHITECTURES="arm64"
                    but for it to work you also need to nuke/erase all the cmake caches
                    (easiest is to delete all of the subdirectory /Users/myname/Qt/6.2.4/Src/qtbase/src/plugins/sqldrivers and download a fresh copy)

                    This is a frequent topic on this forum, there a more posts on this here and here

                    xtophX 1 Reply Last reply
                    2
                    • hskoglundH hskoglund

                      Hi, you are on the right track specifying -DCMAKE_OSX_ARCHITECTURES="arm64"
                      but for it to work you also need to nuke/erase all the cmake caches
                      (easiest is to delete all of the subdirectory /Users/myname/Qt/6.2.4/Src/qtbase/src/plugins/sqldrivers and download a fresh copy)

                      This is a frequent topic on this forum, there a more posts on this here and here

                      xtophX Offline
                      xtophX Offline
                      xtoph
                      wrote on last edited by
                      #12

                      @hskoglund Thank you, that is very helpful!

                      1 Reply Last reply
                      0

                      • Login

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups
                      • Search
                      • Get Qt Extensions
                      • Unsolved