第八天:gec6818arm开发板和Ubuntu中安装并且编译移植mysql驱动连接QT执行程序

一、Ubuntu18.04中安装并且编译移植mysql驱动程序连接qt执行程序

1 、安装Mysql

c 复制代码
sudo apt-get install mysql-server
 
apt-get isntall mysql-client
 
 sudo apt-get install libmysqlclient-d

2、查看是否安装成功,即查看MySQL版本

c 复制代码
mysql --version       

3、MySQL启动与关闭命令

c 复制代码
service mysql start  # 启动
service mysql stop  # 关闭

4、设置用户和密码

(1)先输入以下命令

c 复制代码
cd /etc/mysql
sudo cat debian.cnf

(2)你会得到以下类似结果

(3)根据user 和 password输出结果, 编辑命令 mysql -u( u s e r ) − p (user) -p(user)−p(password),不用写括号,括号是方便看

c 复制代码
mysql -udebian-sys-maint -p2STJ4ZfRtNhqe4Aw    
#最好是复制过来以免出错,不要把 -u  -p 忽略掉,且u,p后面无空格

(4)至此 已经进入到了MySQL系统中了

5、改密码

依次输入以下数据库语句(也可以全部复制直接输入运行)

bash 复制代码
show databases;
use mysql;
update user set authentication_string=PASSWORD('自己的密码') where user='root';
update user set plugin="mysql_native_password"; 
flush privileges;
quit;

6、登录

c 复制代码
service mysql stop  # 关闭
service mysql start  # 启动
c 复制代码
mysql -uroot -p密码
或者
mysql -uroot -p #回车
再输入密码

如果现在连接mysql会报错,没有mysql驱动如下类似报错:

bash 复制代码
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7
db open err: "Driver not loaded Driver not loaded"

7.编译移植mysql驱动 (这一过程究极复杂,建议参考以下其他博客结合参照,请注意,如果你是按照我的博客一步一步安装的,即QT版本是5.9,则有快速简单方法,直接看第8步)

(1)保险起见,再次执行以下命令安装一遍libmysqlclient-dev

c 复制代码
sudo apt-get install libmysqlclient-dev

(2)进入QT安装目录的源码目录(如果安装 时没有选择源码,重新安装下),找到MySql驱动源码目录

如:/home/csgec/Qt5.9.1/5.9.1/Src/qtbase/src/plugins/sqldrivers/mysql

(3)在上述mysql目录下执行qmake命令,记住qmake命令路径是否和你一样正确,生成Makefile

c 复制代码
/home/csgec/Qt5.9.1/5.9.1/gcc_64/bin/qmake "INCLUDEPATH+=/usr/include/mysql" "LIBS+=-L/usr/lib/x86_64-linux-gnu/ -lmysqlclient" mysql.pro

注:如果出错:
Project ERROR: Library 'mysql' is not defined.

则打开mysql.pro文件注释掉QMAKE_USE +=mysql这行
如果出错:
qtsqldrivers-config.pri没找到

则下载QT5.9.1的源码包,到相应目录拷贝过来就可以。(安装包中居然没有这个文件,但源码包中有)

(4)分别执行以下命令

bash 复制代码
cd  /home/csgec/Tools/qt-everywhere-opensource-src-5.9.1/qtbase/src/plugins/sqldrivers
c 复制代码
cp qtsqldrivers-config.pri /home/csgec/Qt5.9.1/5.9.1/Src/qtbase/src/plugins/sqldrivers
c 复制代码
make
c 复制代码
make install

(5)生成的库所在的目录: /home/csgec/Tools/qt-everywhere-opensource-src-5.9.1/qtbase/plugins/sqldrivers/

把libqsqlmysql.so放到qt安装目录/plugins/sqldrivers/里面即可

8.编译移植mysql驱动简单方法

我提供了已经移植编译好的驱动文件,大家点击下载放在相应的目录即可

自此MySQL安装完成,自己可以在Ubuntu中编写qt程序直接连接mysql了

二、gec6818arm开发板中安装并且编译移植mysql驱动程序连接qt执行程序

快速方法:移植先看:

当前文件夹都是我移植好的库和源码包,后面移植生成的库都放在了当前文件夹下,其中mysql-arm.tar.gz 是 我已经移植好的mysql在arm平台下的源码包,

qt-everywhere-opensource-src-5.9.1.tar.gz是QT的官方源码包(用于后面我们移植QT-mysql)

不想移植的看这:

-》在开发板的QT库的目录下/opt/EMqt5.9-gec/plugins 创建mkdir sqldrivers

-》拷贝libqsqlmysql.so到sqldrivers目录下

-》建立软连接 ln -s /opt/armqt5.5-gec/plugins/sqldrivers/libqsqlmysql.so /lib/libqsqlmysql.so
libqsqlmysql.so已经上传了,自己可以[点击下载](上面那个下载了就不用重复下载,放一起了)(https://download.csdn.net/download/xqmids99/88362750)

-》配置好mysql服务器支持远程连接(详见页底)

--------------------------------------------mysql完整版(包括客户端和服务器端)-----------------------------------------------------

1.将mysql-arm.tar.gz下载到开发板,解压mysql-arm.tar.gz到/usr/local目录下

--》tar -zxvf mysql-arm.tar.gz -C /usr/local

2.将mysql.server拷贝到开发板/etc/init.d/目录下

  1. 将my.conf文件拷贝到/etc目录下

不过因为我们粤嵌的开发板flash较小,我们选择只移植mysql的客户端,连接pc端的mysql

---------------------------------------------------------- C语言 客户端版------------------------------------------------------------------------------------

(具体移植方法见http://blog.csdn.net/liangzhuangdongtou/article/details/51782557--》》》可能会有所出入,遇到问题自己解决一下呗)

1.拷贝libmysqlclient.so.16.0.0 到开发板/lib目录下,并建立软连接,命令如下

ln -s libmysqlclient.so.16.0.0 libmysqlclient.so.16

ln -s libmysqlclient.so.16.0.0 libmysqlclient.so

2.拷贝libmysqlclient_r.so.16.0.0文件到开发板/lib目录下,并建立软连接libmysqlclient_r.so.16

ln -s libmysqlclient_r.so.16.0.0 libmysqlclient_r.so.16

ln -s libmysqlclient_r.so.16.0.0 libmysqlclient_r.so

3.拷贝 mysql_client_test到开发板/bin目录下,并将权限修改为777

可用 mysql_client_test --help查看使用方法(mysql_client_test用于测试mysql连接,此步骤可以忽略)

使用方法:mysql_client_test -h ip--database=数据库名 -u 用户 -p密码1

------》mysql_client_test -h 192.168.1.17 --database=student -u root -p123456

--》连接成功会出现以下信息

#####################################

client_connect

#####################################

Establishing a connection to '192.168.1.17' ...OK

Connected to MySQL server version: 5.7.17-log (50717)

---------------------------------------------------------QT客户端版------------------------------------------------------------------------

  1. QT使用mysql需要先编译好arm平台下的mysql(详见 http://blog.csdn.net/liangzhuangdongtou/article/details/51782557)

    -》过程有些麻烦

    赶时间的话可选择以下方案

    将我移植好的源码包 mysql-arm.tar.gz 解压放到/usr/local目录下

    -》tar -zxvf /mnt/hgfs/share/mysql-arm.tar.gz -C /usr/local

上面的完成后,接下来需要编译对应ARM平台的QT的mysql驱动(当然需要先移植好QT到开发板,还没有移植的同学看下之前的笔记咯)

(由于我们已经移植好的粤嵌qt库没有支持mysql, 此时我们需要编译 QT-mysql,)

a)解压源码包tar -zxvf qt-everywhere-opensource-src-5.5.0.tar.gz -C /opt

tips:QT源码包每一级都会有.pro文件,所以我们可以单独编译我们所需要的

b)进入解压后的源码包目录

1)cd /opt/qt-everywhere-opensource-src-5.5.0/qtbase/src/plugins/sqldrivers/mysql

2)执行/opt/armqt5.5-gec/bin/qmake "INCLUDEPATH+=/usr/local/mysql/include/mysql" "LIBS+=-L/usr/local/mysql/lib/mysql -lmysqlclient_r" mysql.pro

复制代码
3)倘若一切步骤顺利的话,会出现以下信息
	rm -f libqsqlmysql.so

arm-linux-gnueabi-g++ -Wl,--no-undefined -Wl,-O1 -Wl,--enable-new-dtags -Wl,-rpath,/opt/armqt5.5-gec/lib -shared -o libqsqlmysql.so .obj/main.o .obj/qsql_mysql.o .obj/moc_qsql_mysql_p.o -L/home/tiydy/armlib/tslib/lib -L/home/tiydy/armlib/freetype/lib -L/home/tiydy/armlib/fontconfig/lib -L/usr/local/mysql/lib/mysql -lmysqlclient_r -L/opt/armqt5.5-gec/lib -lQt5Sql -lQt5Core -lpthread

mv -f libqsqlmysql.so .../.../.../.../plugins/sqldrivers/

复制代码
    即在/opt/qt-everywhere-opensource-src-5.5.0/qtbase/plugins/sqldrivers目录下出现libqsqlmysql.so
	
	-》》》libqsqlmysql.so这个是我们想要的
	
4)拷贝libsqlmysql.so到开发板上
	a) 我这里是/opt/armqt5.5-gec/plugins 
		-》先创建mkdir sqldrivers
		-》拷贝libqsqlmysql.so到sqldrivers目录下
		-》建立软连接 ln -s /opt/armqt5.5-gec/plugins/sqldrivers/libqsqlmysql.so   /lib/libqsqlmysql.so
			到此就大功告成了!!!!

5)最后下载mysql_test目录下的测试程序(mysql_test)到开发板测试一下吧

--------------------让mysql支持远程连接--------------------------------------------

方法1.在windows进入cmd命令行(当然也可以在图形界面上修改)

-》mysql -u root -p

-》use mysql;

-》update user set host = '%' where user = 'root';

-》select host, user from user;

方法2:有兴趣自己找下吧!!

相关推荐
AI+程序员在路上1 分钟前
QT跨平台软件开发要点
开发语言·qt
yyyyyyykk16 分钟前
Spring知识点总结
数据库·mysql·spring
道剑剑非道1 小时前
QT开发技术【QT实现桌面右下角消息】
开发语言·数据库·qt
Linux运维老纪2 小时前
交换机之配置系统基本信息(Basic Information of the Configuration System for Switches)
linux·网络·mysql·华为·云计算·运维开发
此刻我在家里喂猪呢3 小时前
qt之开发大恒usb3.0相机一
qt·相机开发·大恒usb3.0相机·工业相机开发
小黑屋的黑小子5 小时前
【MySQL】MySQL索引与事务
数据库·mysql·oracle
xMathematics8 小时前
计算机图形学实践:结合Qt和OpenGL实现绘制彩色三角形
开发语言·c++·qt·计算机图形学·cmake·opengl
blackA_8 小时前
数据库MySQL学习——day4(更多查询操作与更新数据)
数据库·学习·mysql
qq_4419960510 小时前
为何 RAG 向量存储应优先考虑 PostgreSQL + pgvector 而非 MySQL?
数据库·mysql·postgresql
星火撩猿10 小时前
ubantu中下载编译安装qt5.15.3
开发语言·qt