Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Installation and Deployment
  4. Cross-compile MySQL driver for RPi3
Forum Updated to NodeBB v4.3 + New Features

Cross-compile MySQL driver for RPi3

Scheduled Pinned Locked Moved Unsolved Installation and Deployment
16 Posts 3 Posters 5.3k 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.
  • 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 Extensions
                            • Unsolved