Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Installation and Deployment
  4. Cross-compile MySQL driver for RPi3
Qt 6.12 LTS is out! See what's new in the release blog

Cross-compile MySQL driver for RPi3

Scheduled Pinned Locked Moved Unsolved Installation and Deployment
16 Posts 3 Posters 8.6k 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.
  • E Offline
    E Offline
    endr
    wrote on last edited by endr
    #3

    How can I obtain the ARM version of the MySQL libraries in a folder on my local machine?
    I've tried downloading libmysqlclient-dev (via apt-get install) on Raspbian, then copied the /usr folder on my local machine. Then I've changed the path in INCLUDEPATH and LIBS as this:

    QT       += core gui sql
    
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    
    TARGET = MySqlTest
    TEMPLATE = app
    target.path = /opt/$${TARGET}/bin
    INSTALLS += target
    
    SOURCES += main.cpp\
            widget.cpp
    INCLUDEPATH += /home/andrea/Scaricati/sysroot/usr/include/mysql
    LIBS += -L/home/andrea/Scaricati/sysroot/usr/lib/arm-linux-gnueabihf -lmysqlclient_r
    
    
    HEADERS  += widget.h
    
    FORMS    += widget.ui
    
    

    But it keeps giving me error such:
    cannot find libc.so.6
    cannot find libc_nonshared.a
    cannot find ld-linux-armhf.so.3

    Can you suggest the correct procedure (where to find the right libraries to download) and how to link them correctly in the .pro file?

    Thanks for your support

    1 Reply Last reply
    0
    • SGaistS Offline
      SGaistS Offline
      SGaist
      Lifetime Qt Champion
      wrote on last edited by
      #4

      You should use the sysroot of your device when cross-compiling so you ensure you have all the correct libraries available.

      Interested in AI ? www.idiap.ch
      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

      1 Reply Last reply
      0
      • E Offline
        E Offline
        endr
        wrote on last edited by
        #5

        I've copied the MySQL directory in the include folder of the poky's sysroot, and the shared mysqlclient libraries too in the /usr/lib directory like this:

        QT       += core gui sql
        
        greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
        
        TARGET = MySqlTest
        TEMPLATE = app
        target.path = /opt/$${TARGET}/bin
        INSTALLS += target
        
        SOURCES += main.cpp\
                widget.cpp
        INCLUDEPATH += /opt/poky/2.3/sysroots/cortexa7hf-neon-vfpv4-poky-linux-gnueabi/usr/include/mysql
        LIBS += -L/opt/poky/2.3/sysroots/cortexa7hf-neon-vfpv4-poky-linux-gnueabi/usr/lib -lmysqlclient_r
        
        
        HEADERS  += widget.h
        
        FORMS    += widget.ui
        

        Now it gives me only one error:

        /opt/MySqlTest/bin/MySqlTest: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
        Application finished with exit code 127.
        

        What could it be?

        1 Reply Last reply
        0
        • SGaistS Offline
          SGaistS Offline
          SGaist
          Lifetime Qt Champion
          wrote on last edited by
          #6

          Are you running your application on your device when you get that error ?

          Interested in AI ? www.idiap.ch
          Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

          1 Reply Last reply
          0
          • E Offline
            E Offline
            endr
            wrote on last edited by
            #7

            Yes, I run it from Qt to the remote RPi3. The application runs flawless if I use the Desktop kit. When I use the kit I've made for the Raspberry pi 3 (that has always worked fine) I get that error

            jsulmJ 1 Reply Last reply
            0
            • E endr

              Yes, I run it from Qt to the remote RPi3. The application runs flawless if I use the Desktop kit. When I use the kit I've made for the Raspberry pi 3 (that has always worked fine) I get that error

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

              @endr Does this file exist on your target device: libmysqlclient.so.18 ? If so where?

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

              1 Reply Last reply
              0
              • E Offline
                E Offline
                endr
                wrote on last edited by
                #9

                If I copy :

                libmysqlclient.a
                libmysqlclient_r.a 
                libmysqlclient_r.so 
                libmysqlclient_r.so.18 
                ibmysqlclient_r.so.18.0.0
                libmysqlclient.so 
                libmysqlclient.so.18 
                libmysqlclient.so.18.0.0
                

                to /usr/lib on my target device I get:

                QSqlDatabase: QMYSQL driver not loaded
                QSqlDatabase: available drivers: 
                

                otherwise, without copying the shared libraries on the remote device (trying to crosscompile them from the local machine) I keep getting:

                /opt/MySqlTest/bin/MySqlTest: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
                Application finished with exit code 127.
                

                What can I do?

                jsulmJ 1 Reply Last reply
                0
                • E endr

                  If I copy :

                  libmysqlclient.a
                  libmysqlclient_r.a 
                  libmysqlclient_r.so 
                  libmysqlclient_r.so.18 
                  ibmysqlclient_r.so.18.0.0
                  libmysqlclient.so 
                  libmysqlclient.so.18 
                  libmysqlclient.so.18.0.0
                  

                  to /usr/lib on my target device I get:

                  QSqlDatabase: QMYSQL driver not loaded
                  QSqlDatabase: available drivers: 
                  

                  otherwise, without copying the shared libraries on the remote device (trying to crosscompile them from the local machine) I keep getting:

                  /opt/MySqlTest/bin/MySqlTest: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
                  Application finished with exit code 127.
                  

                  What can I do?

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

                  @endr You can try to start your app like this:

                  QT_DEBUG_PLUGINS=1 && ./my_app
                  

                  You will get a lot of output, post it here.

                  The libraries you're copying: are those for your target (ARM)?

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

                  1 Reply Last reply
                  0
                  • E Offline
                    E Offline
                    endr
                    wrote on last edited by
                    #11

                    @jsulm
                    I connect in ssh to the RPi3, start the application as you suggested:

                    root@rpi3:/opt/MySqlTest/bin# QT_DEBUG_PLUGINS=1 && ./MySqlTest 
                    ./MySqlTest: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
                    
                    

                    If I copy those shared libraries (from the libmysqlclient-dev package downloaded on a Raspbian OS) to /usr/lib I get this:

                    root@rpi3:/opt/MySqlTest/bin# QT_DEBUG_PLUGINS=1 && ./MySqlTest 
                    Unable to query physical screen size, defaulting to 100 dpi.
                    To override, set QT_QPA_EGLFS_PHYSICAL_WIDTH and QT_QPA_EGLFS_PHYSICAL_HEIGHT (in millimeters).
                    QSqlDatabase: QMYSQL driver not loaded
                    QSqlDatabase: available drivers: 
                    
                    jsulmJ 1 Reply Last reply
                    0
                    • E endr

                      @jsulm
                      I connect in ssh to the RPi3, start the application as you suggested:

                      root@rpi3:/opt/MySqlTest/bin# QT_DEBUG_PLUGINS=1 && ./MySqlTest 
                      ./MySqlTest: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
                      
                      

                      If I copy those shared libraries (from the libmysqlclient-dev package downloaded on a Raspbian OS) to /usr/lib I get this:

                      root@rpi3:/opt/MySqlTest/bin# QT_DEBUG_PLUGINS=1 && ./MySqlTest 
                      Unable to query physical screen size, defaulting to 100 dpi.
                      To override, set QT_QPA_EGLFS_PHYSICAL_WIDTH and QT_QPA_EGLFS_PHYSICAL_HEIGHT (in millimeters).
                      QSqlDatabase: QMYSQL driver not loaded
                      QSqlDatabase: available drivers: 
                      
                      jsulmJ Offline
                      jsulmJ Offline
                      jsulm
                      Lifetime Qt Champion
                      wrote on last edited by
                      #12

                      @endr What does

                      ldd PATH_TO_YOUR_QT/plugins/sqldrivers/libqsqlmysql.so
                      

                      on your RaspberryPi say?

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

                      1 Reply Last reply
                      1
                      • E Offline
                        E Offline
                        endr
                        wrote on last edited by
                        #13

                        There is no sqldrivers directory in qt5/plugins, just those:

                        root@rpi3:/usr/lib/qt5/plugins# ls -l 
                        total 68
                        drwxr-xr-x 2 root root 4096 Jun 14 10:51 bearer
                        drwxr-xr-x 2 root root 4096 Jun 14 11:44 canbus
                        drwxr-xr-x 2 root root 4096 Jun 14 10:51 egldeviceintegrations
                        drwxr-xr-x 2 root root 4096 Jun 14 10:51 generic
                        drwxr-xr-x 2 root root 4096 Jun 14 12:23 geoservices
                        drwxr-xr-x 2 root root 4096 Jun 14 11:43 iconengines
                        drwxr-xr-x 2 root root 4096 Jun 14 12:33 imageformats
                        drwxr-xr-x 2 root root 4096 Jun 14 12:24 lipi_toolkit
                        drwxr-xr-x 2 root root 4096 Jun 14 12:08 mediaservice
                        

                        What do I need to download?

                        jsulmJ 1 Reply Last reply
                        0
                        • E endr

                          There is no sqldrivers directory in qt5/plugins, just those:

                          root@rpi3:/usr/lib/qt5/plugins# ls -l 
                          total 68
                          drwxr-xr-x 2 root root 4096 Jun 14 10:51 bearer
                          drwxr-xr-x 2 root root 4096 Jun 14 11:44 canbus
                          drwxr-xr-x 2 root root 4096 Jun 14 10:51 egldeviceintegrations
                          drwxr-xr-x 2 root root 4096 Jun 14 10:51 generic
                          drwxr-xr-x 2 root root 4096 Jun 14 12:23 geoservices
                          drwxr-xr-x 2 root root 4096 Jun 14 11:43 iconengines
                          drwxr-xr-x 2 root root 4096 Jun 14 12:33 imageformats
                          drwxr-xr-x 2 root root 4096 Jun 14 12:24 lipi_toolkit
                          drwxr-xr-x 2 root root 4096 Jun 14 12:08 mediaservice
                          

                          What do I need to download?

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

                          @endr How did you install Qt on RaspberryPi?

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

                          1 Reply Last reply
                          0
                          • E Offline
                            E Offline
                            endr
                            wrote on last edited by
                            #15

                            I'm using Yocto, Qt5 is installed via the meta-qt5 layer during the bitbaking of the image

                            jsulmJ 1 Reply Last reply
                            0
                            • E endr

                              I'm using Yocto, Qt5 is installed via the meta-qt5 layer during the bitbaking of the image

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

                              @endr Well, then I don't know what exactly you need to install. Something with qt and mysql. On Ubuntu it is libqt5sql5-mysql package.

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

                              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
                              • Unsolved