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


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

    1 、安装Mysql

    sudo apt-get install mysql-server
     
    apt-get isntall mysql-client
     
     sudo apt-get install libmysqlclient-d
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

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

    mysql --version       
    
    
    • 1
    • 2

    3、MySQL启动与关闭命令

    service mysql start  # 启动
    service mysql stop  # 关闭
    
    
    • 1
    • 2
    • 3

    4、设置用户和密码

    (1)先输入以下命令

    cd /etc/mysql
    sudo cat debian.cnf
    
    • 1
    • 2

    (2)你会得到以下类似结果
    在这里插入图片描述
    (3)根据user 和 password输出结果, 编辑命令 mysql -u( u s e r ) − p (user) -p(user)−p(password),不用写括号,括号是方便看

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

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

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

    show databases;
    use mysql;
    update user set authentication_string=PASSWORD('自己的密码') where user='root';
    update user set plugin="mysql_native_password"; 
    flush privileges;
    quit;
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    6、登录

    service mysql stop  # 关闭
    service mysql start  # 启动
    
    
    • 1
    • 2
    • 3
    mysql -uroot -p密码
    或者
    mysql -uroot -p #回车
    再输入密码
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

    QSqlDatabase: QMYSQL driver not loaded
    QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7
    db open err: “Driver not loaded Driver not loaded”
    
    • 1
    • 2
    • 3

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

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

    sudo apt-get install libmysqlclient-dev
    
    • 1

    (2)进入QT安装目录的源码目录(如果安装 时没有选择源码,重新安装下),找到MySql驱动源码目录
    如:/home/csgec/Qt5.9.1/5.9.1/Src/qtbase/src/plugins/sqldrivers/mysql

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

    /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
    
    • 1

    注:如果出错:
    Project ERROR: Library ‘mysql’ is not defined.
    则打开mysql.pro文件注释掉QMAKE_USE +=mysql这行
    如果出错:
    qtsqldrivers-config.pri没找到
    则下载QT5.9.1的源码包,到相应目录拷贝过来就可以。(安装包中居然没有这个文件,但源码包中有)

    (4)分别执行以下命令

    cd  /home/csgec/Tools/qt-everywhere-opensource-src-5.9.1/qtbase/src/plugins/sqldrivers
    
    • 1
    cp qtsqldrivers-config.pri /home/csgec/Qt5.9.1/5.9.1/Src/qtbase/src/plugins/sqldrivers
    
    • 1
    make
    
    • 1
    make install
    
    • 1

    (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
    
    • 1
    • 2

    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)到开发板测试一下吧
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    --------------------让mysql支持远程连接--------------------------------------------
    方法1.在windows进入cmd命令行(当然也可以在图形界面上修改)
    -》mysql -u root -p
    -》use mysql;
    -》update user set host = ‘%’ where user = ‘root’;
    -》select host, user from user;

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

  • 相关阅读:
    语音处理——Pyannote使用学习
    亲爱的朋友
    (57、58)性能分析命令2
    canvas 画布绘制时钟
    上周热点回顾(10.23-10.29)
    面向对象设计介绍和代码示例
    bug总结问题集和知识点集(一)
    【SpringBoot实战系列】阿里云OSS接入上传图片实战
    【PytorchLearning】Dropout | 内部机制及代码复现
    基于随机森林实现特征选择降维及回归预测(Matlab代码实现)
  • 原文地址:https://blog.csdn.net/xqmids99/article/details/133134024