目前所使用的板子的是华北工控的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*"
我的在/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 也拷贝一份出来(不同的板子可能不一样,因板子系统而异)。
至此我们得到这两个玩意。
5.然后来到我们电脑端的ubuntu中。把原来的arm-linux-gnueabihf删除掉,用我们拷贝出来的替换;
同时,那个拷贝出来的头文件文夹也拷贝到相应位置。
拷贝完之后记得要用我们之前的脚本处理一下这个rootfs
python sysrootChange.py ./rootfs
-------至此,rootfs的初始化基本完成。接下来处理qmysql的源码。
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
最后得到这玩意
11.最后将这玩意拷贝到你部署在板子上的Qt文件夹中。
我的是在这里(其实最好是用同一个版本的源码来编译,我这里由于一些原因,用Qt5.12.7去编译Qt5.12.9的qmysql源码)
/Qt5.12.7_ARM/plugins/sqldrivers
12.最后的最后,写个程序测试一下。
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
ok,收工。