QMYSQL driver not loaded - cross compiling for Raspberry PI 3
-
@JarekT said in QMYSQL driver not loaded - cross compiling for Raspberry PI 3:
I would be very happy to receive any suggestion...
First, I would suggest you to read documentation ==> https://doc.qt.io/qt-5/sql-driver.html#how-to-build-the-qmysql-plugin-on-unix-and-macos
Then, check MySQL or MariaDB shared libs and headers are installed on your platform.
Rerunqmake
-
@KroMignon Thank you for your reply. Please tell me should I do it on target or on the host?
The idea is to connect to the mysql installed on the target, so I think it should be done on the target. My MySQL database location is /var/lib, so I tried this:
but it looks like there is no qmake command available. I tried to find for any qmake file in the target:
-
-
@KroMignon When I tried to install those packages I got information that mariadb counterparts are available. So I tried to install them and it appeared that libmariadb-dev-compat,libmariadb-dev I already had, but libmariadbd-dev I didn't have so I installed it.
How can I cross-compile the plugin?
-
@JarekT said in QMYSQL driver not loaded - cross compiling for Raspberry PI 3:
How can I cross-compile the plugin?
After installing the missed packages, you have to recreate/update the sysroot.
Then restartqmake
in the sqldrivers directory (I suppose RPI sysroot is located at/home/embsys/raspi/sysroot
):/home/embsys/raspi/qtbase/bin/qmake -- MYSQL_PREFIX=/home/embsys/raspi/sysroot/usr/local make make install
-
@KroMignon said in QMYSQL driver not loaded - cross compiling for Raspberry PI 3:
Then restart qmake in the sqldrivers directory
I would suggest to do out of source builds to avoid problems with build artefacts from previous builds.
-
@KroMignon said in QMYSQL driver not loaded - cross compiling for Raspberry PI 3:
you have to recreate/update the sysroot
In the ~/raspi folder I did this (192.168.0.100 is IP of RPi):
rsync -avz pi@192.168.0.100:/lib sysroot
rsync -avz pi@192.168.0.100:/usr/include sysroot/usr
rsync -avz pi@192.168.0.100:/usr/lib sysroot/usr
rsync -avz pi@192.168.0.100:/opt/vc sysroot/optIs this what you meant by "you have to recreate/update the sysroot"?
After that I did qmake and I got the following results:
Unfortunately I don't see that MySql was configured...
Is the prefix "MYSQL_PREFIX=/home/embsys/raspi/sysroot/usr/local" correct and is it enough?
@jsulm Before I did qmake I deleted whole src folder and extracted it again. Only then I did qmake. Is this what you meant?
-
@JarekT said in QMYSQL driver not loaded - cross compiling for Raspberry PI 3:
Is the prefix "MYSQL_PREFIX=/home/embsys/raspi/sysroot/usr/local" correct and is it enough?
I don't really know, I don't have a RPI to test it.
But according to this post ==> https://raspberrypi.stackexchange.com/a/101366
You should probably use this:/home/embsys/raspi/qtbase/bin/qmake -- MYSQL_PREFIX=/home/embsys/raspi/sysroot/usr/lib/arm-linux-gnueabihf
-
@JarekT said in QMYSQL driver not loaded - cross compiling for Raspberry PI 3:
What can I do "remove any leftovers from the previous build" before I do reconfiguration?
Extract again the source code. To avoid this do out of source builds:
mkdir build cd build qmake PATH_TO_SOURCE
-
@jsulm I've extracted again the sources. But I'm not sure if I understand what you meant by: "To avoid this do out of source builds". Do you mean that after I have newly extracted source code, I should always do the qmake in a new folder (eg. "build" as you mentioned) so that I do not affect the source code and in this way I can always do fresh compilation without the need to extract the source code files again?
Assuming that this is what you meant I did this:
As I can see mysql was not compiled... Could you please check if the paths and prefixes are correct?...
-
@JarekT said in QMYSQL driver not loaded - cross compiling for Raspberry PI 3:
I should always do the qmake in a new folder
Yes.
To check why it still does not work please see what is in configure.log file.
-
@JarekT said in QMYSQL driver not loaded - cross compiling for Raspberry PI 3:
Could you please help me understand those problems?
Can you says which is the local path where you have put the sysroot? I supposed it was /home/embsys/raspi/sysroot.
Then search in this path where is located libmysqlclient withfind
:find /home/embsys/raspi/sysroot -name libmysqlclient*.*
Then use the path to configure/compile your plugin:
/home/embsys/raspi/qtbase/bin/qmake -- MYSQL_PREFIX=<lib_mysqlclient_path>
-
@KroMignon said in QMYSQL driver not loaded - cross compiling for Raspberry PI 3:
Can you says which is the local path where you have put the sysroot? I supposed it was /home/embsys/raspi/sysroot.
Yes, this is my sysroot. I did it as you can see below
This command I tried also before and the results are unsuccessful as before..
Here I'm configuring/compiling the plugin using sqldriver.pro file, but I also read somewhere that mysql.pro (/home/embsys/raspi/qt-everywhere-src-5.12.3/qtbase/src/plugins/sqldrivers/mysql/mysql.pro) file should compiled. Do you know anything about it? -
Another idea: shouldn't I configure qmake itself before I try to use it to compile the plugin?
That was my configure command when I was doing cross-compiling configuration (as in the LINK)
./configure -release -opengl es2 -device linux-rasp-pi3-g++ -device-option CROSS_COMPILE=~/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf- -sysroot ~/raspi/sysroot -opensource -confirm-license -make libs -prefix /usr/local/qt5pi -extprefix ~/raspi/qt5pi -hostprefix ~/raspi/qt5 -no-use-gold-linker -v -no-gbm
The above doesn't include mysql feature (should it??)
-
@JarekT said in QMYSQL driver not loaded - cross compiling for Raspberry PI 3:
shouldn't I configure qmake itself
What do you want to configure?