第八天:gec6818arm开发板和Ubuntu中安装并且编译移植mysql驱动连接QT执行程序
一、Ubuntu18.04中安装并且编译移植mysql驱动程序连接qt执行程序
1 、安装Mysql
sudo apt-get install mysql-serverapt-get isntall mysql-clientsudo apt-get install libmysqlclient-d
2、查看是否安装成功,即查看MySQL版本
mysql --version
3、MySQL启动与关闭命令
service mysql start # 启动
service mysql stop # 关闭
4、设置用户和密码
(1)先输入以下命令
cd /etc/mysql
sudo cat debian.cnf
(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后面无空格
(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;
6、登录
service mysql stop # 关闭
service mysql start # 启动
mysql -uroot -p密码
或者
mysql -uroot -p #回车
再输入密码
如果现在连接mysql会报错,没有mysql驱动如下类似报错:
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
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
/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)分别执行以下命令
cd /home/csgec/Tools/qt-everywhere-opensource-src-5.9.1/qtbase/src/plugins/sqldrivers
cp qtsqldrivers-config.pri /home/csgec/Qt5.9.1/5.9.1/Src/qtbase/src/plugins/sqldrivers
make
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/目录下
- 将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客户端版————————————————————————
-
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:有兴趣自己找下吧!!
相关文章:
第八天:gec6818arm开发板和Ubuntu中安装并且编译移植mysql驱动连接QT执行程序
一、Ubuntu18.04中安装并且编译移植mysql驱动程序连接qt执行程序 1 、安装Mysql sudo apt-get install mysql-serverapt-get isntall mysql-clientsudo apt-get install libmysqlclient-d2、查看是否安装成功,即查看MySQL版本 mysql --version 3、MySQL启动…...
使用JavaScript实现图片的自动轮播
介绍 在网站开发中,经常会遇到需要展示多张图片并自动切换的需求,这就需要使用JavaScript来实现图片的自动轮播功能。本文将通过一个简单的例子,演示如何用JavaScript实现图片的自动轮播。 实现步骤: HTML结构: 首先…...
React 如何拿时间戳计算得到开始和结束时间戳
获取需要的时间戳(开始 and 结束时间戳) 调用如下方法就行: function getWantTimestamp(props) {//当前时间const nowDate parseInt((new Date().getTime() / 1000).toString()); //当前时间switch (props) {// 当前时间时间戳case "nowData": {return n…...
leetcode114 二叉树展开为链表
题目 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。 展开后的单链表应该与二叉树 先序遍历 顺序相同。 示例 输…...
Linux系统上使用SQLite
1. 安装SQLite 在Linux上安装SQLite非常简单。可以使用包管理器(如apt、yum)直接从官方软件源安装SQLite。例如,在Ubuntu上使用以下命令安装SQLite: sudo apt-get install sqlite32. 打开或创建数据库 要打开或创建一个SQLite数…...
实现一个超级简单的string类(基于c++)
简单的string仅仅需要构造函数,拷贝构造,移动构造和移动赋值,operator,析构函数等。如下: #include<iostream> #include<assert.h> using namespace std; namespace qyy {class string{public:friend ostream& …...
uniapp存值和取值,获取登录凭证 code方法
Uniapp 的存值和取值 Uniapp 的存值和取值方法可以使用Vue.js的数据绑定方式,也可以使用uni.setStorageSync() 和 uni.getStorageSync() 方法。 使用Vue.js的数据绑定方式: 在Vue组件中定义一个data属性,然后将需要存储的值赋给该属性。例…...
【SpringCloud微服务全家桶学习笔记-服务调用Ribbon/openFeign】
SpringCloud微服务全家桶学习笔记 内容:SpringCloud SpringCloud alibaba 技术栈:Java8mavengit,githubNginxRabbitMQSpringBoot2.0 仓库:链接 服务调用Ribbon 是什么? Ribbon是Netflix发布的开源项目ÿ…...
Qt使用I.MX6U开发板上的按键(原理:将电脑键盘方向键↓在Qt中的枚举值与开发板中按键定义的枚举值一致,这样电脑端测试效果就与开发板的一致)
在上篇介绍了Qt点亮I.MX6U开发板的一个LED,对于Qt控制I.MX6U开发板的一个蜂鸣器原理也是一样的,就不做详细介绍,具体可参考Qt控制I.MX6U开发板的一个蜂鸣器,本篇介绍Qt使用I.MX6U开发板上的按键的相关内容。 文章目录 1. 开发板硬…...
C++ RAII在HotSpot VM中的重要应用
RAII(Resource Acquisition Is Initialization),也称为“资源获取就是初始化”,是C语言的一种管理资源、避免泄漏的惯用法。C标准保证任何情况下,已构造的对象最终会销毁,即它的析构函数最终会被调用。简单…...
python随手小练
题目: 使用python做一个简单的英雄联盟商城登录界面 具体操作: print("英雄联盟商城登录界面") print("~ * "*15 "~") #找其规律 a "1、用户登录" b "2、新用户注册" c "3、退出系统&quo…...
MySQL——函数和流程控制
2023.9.21 函数 含义:一组预先编译好的SQL语句的集合,理解成批处理语句。 提高代码的重用性简化操作减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率 与存储过程的区别: 存储过程:可以有0个返回&am…...
【Vue3 源码讲解】nextTick
nextTick 是 Vue 3 中用于异步执行回调函数的函数,它会将回调函数延迟到下一个微任务队列中执行。其中,Vue 更新 DOM 是异步的。下面是对 nextTick 函数的详细解释: export function nextTick<T void, R void>(this: T,fn?: (this:…...
什么是ATR,在聚宽量化平台如何计算ATR
海龟们使用两种资金管理方法。首先,我们把头寸分成一个个小块。这样,即使一笔交易赔了钱,我们损失的也只是一个头寸的一部分。里奇和比尔把这些小块称作头寸单位。其次,我们使用里奇和比尔发明的一种创新性的头寸规模决定方法。这…...
Python 爬虫实战之爬淘宝商品并做数据分析
前言 是这样的,之前接了一个金主的单子,他想在淘宝开个小鱼零食的网店,想对目前这个市场上的商品做一些分析,本来手动去做统计和分析也是可以的,这些信息都是对外展示的,只是手动比较麻烦,所以…...
Python爬虫-requests.exceptions.SSLError: HTTPSConnectionPool疑难杂症解决(1)
前言 本文是该专栏的第7篇,后面会持续分享python爬虫案例干货,记得关注。 在爬虫项目开发中,偶尔可能会遇到SSL验证问题“requests.exceptions.SSLError: HTTPSConnectionPool(host=www.xxxxxx.com, port=443): Max retries exceeded with url ...”。亦或是验证之后的提示…...
12:STM32---RTC实时时钟
目录 一:时间相关 1:Unix时间戳 2: UTC/GMT 3:时间戳转化 二:BKP 1:简历 2:基本结构 三: RTC 1:简历 2: 框图 3:RTC基本结构 4:RTC操作注意 四:案例 A:读写备份寄存器 1:连接图 2: 步骤 3: 代码 B:实时时钟 1:连接图 2:函数介绍 3:代码 一:时间相关 1:Un…...
【动态规划刷题 16】最长等差数列 (有难度) 等差数列划分 II - 子序列
1027. 最长等差数列 https://leetcode.cn/problems/longest-arithmetic-subsequence/ 给你一个整数数组 nums,返回 nums 中最长等差子序列的长度。 回想一下,nums 的子序列是一个列表 nums[i1], nums[i2], …, nums[ik] ,且 0 < i1 <…...
【postgresql】替换 mysql 中的ifnull()
数据库由mysql 迁移到postgresql,程序在执行查询时候报错。 HINT: No function matches the given name and argument types. You might need to add explicit type casts. CONTEXT: referenced column: ifnull 具体SQL: SELECT ifnull(phone,) FROM c_user p…...
单例模式(懒汉式,饿汉式,变体)
单例模式,用于确保一个类只有一个实例,并提供一个全局访问点以访问该实例。 饿汉式(Eager Initialization) 程序启动时就创建实例 #include <iostream> class SingletonEager { private:static SingletonEager* instanc…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...
