目前所使用的板子的是华北工控的EMB3500,cpu为i.Mx6 Q(四核) / DL(双核), Cortex-A9@1GHz,系统为ubuntu16.04,使用的编译工具链为arm-linux-gnueabihf 由于他们提供的rootfs里面已经安装了opengl,Qt的编译比较顺利。编译流程可以参考我另外一篇博文。
然后要编译libqsqlmysql.so。
以下以编译Qt2.12.9的libqsqlmysql.so为例。

0.先弄好板子的上网。
我这里是用一根网线连接板子,然后将电脑的wifi共享给电脑的eth网口,最终达到板子连接网络的效果。主要是要注意板子的固定IP、dns设置。具体可以搜索windows共享上网。
有时还需要编辑一下那个 /etc/resolv.conf

1.板子上面安装mysql。

sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev

安装的时候可能会报那个什么@port@的错误,这时候只要修改一下那个/etc/my.cnf文件就行。

ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock

安装完,并且通过命令行登陆mysql没问题之后。就要开始将板子的主要目录同步到交叉编译的电脑上了。

2.查看mysqlclient安装在哪里。

find / -name "libmysqlclient*"

PostgreSQL arm架构用rpm命令吗_qt


我的在/usr/lib/arm-linux-gnueabihf这个文件夹。

3.将libmysqlclient所在的/usr/lib/arm-linux-gnueabihf文件夹tar好。

tar -cvf arm-linux-gnueabihf.tar /usr/lib/arm-linux-gnueabihf

4.mysql的头文件文件夹 /usr/include/mysql 也拷贝一份出来(不同的板子可能不一样,因板子系统而异)。

至此我们得到这两个玩意。

PostgreSQL arm架构用rpm命令吗_mysql_02

5.然后来到我们电脑端的ubuntu中。把原来的arm-linux-gnueabihf删除掉,用我们拷贝出来的替换;

PostgreSQL arm架构用rpm命令吗_arm_03


同时,那个拷贝出来的头文件文夹也拷贝到相应位置。

PostgreSQL arm架构用rpm命令吗_sql_04


拷贝完之后记得要用我们之前的脚本处理一下这个rootfs

python sysrootChange.py ./rootfs

-------至此,rootfs的初始化基本完成。接下来处理qmysql的源码。

6.到这里下载qtbase源码

PostgreSQL arm架构用rpm命令吗_sql_05


7.将压缩包拷贝到你的电脑ubuntu系统(你交叉编译Qt的那个电脑系统)中,然后解压。

8.然后修改源码 qtbase-everywhere-src-5.12.9/src/plugins/sqldrivers/mysql中的mysql.pro文件

TARGET = qsqlmysql

HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp

#QMAKE_USE += mysql

OTHER_FILES += mysql.json

PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
include(../qsqldriverbase.pri)

#之前拷贝上来的头文件路径
INCLUDEPATH +="/home/yong/Desktop/Qt_source_north/rootfs/usr/include/mysql"
#之前拷贝上来的库
LIBS +=-L"/home/yong/Desktop/Qt_source_north/rootfs/usr/lib/arm-linux-gnueabihf"\
        -lmysqlclient -lssl

#指定编译出来的libqmysql.so存放的目录
DESTDIR  = ../mysql/lib/

9.修改源码qtbase-everywhere-src-5.12.9/src/plugins/sqldrivers的qsqldriverbase.pri

QT  = core core-private sql-private

# For QMAKE_USE in the parent projects.
#include($$shadowed($$PWD)/qtsqldrivers-config.pri)
include(./configure.pri)

PLUGIN_TYPE = sqldrivers
load(qt_plugin)

DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII

10.然后用之前交叉编译出来的qmake去编译这个mysql.pro

cd qtbase-everywhere-src-5.12.9/src/plugins/sqldrivers/mysq
ArmQmake mysql.pro
make

最后得到这玩意

PostgreSQL arm架构用rpm命令吗_arm_06

11.最后将这玩意拷贝到你部署在板子上的Qt文件夹中。

我的是在这里(其实最好是用同一个版本的源码来编译,我这里由于一些原因,用Qt5.12.7去编译Qt5.12.9的qmysql源码)

/Qt5.12.7_ARM/plugins/sqldrivers

PostgreSQL arm架构用rpm命令吗_qt_07


12.最后的最后,写个程序测试一下。

PostgreSQL arm架构用rpm命令吗_linux_08


run.sh

export QTDIR=/Qt5.12.7_ARM
export LD_LIBRARY_PATH=QTDIR/lib:LD_LIBRARY_PATH
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0 #framebuffer驱动
export QWS_MOUSE_PROTO=/dev/input/event0
./MySqlDemo

PostgreSQL arm架构用rpm命令吗_arm_09


ok,收工。