linux(ubuntu18.04.2)下 Qt编译 MySQL链接库的教程
参考1
1、安装MySQL
sudo apt-get install mysql-server mysql-client
sudo apt-get install libqt5sql5-mysql
sudo apt-get install libmysqlclient20
sudo apt-get install libmysqlclient-dev
安装mySQL的主要目的是使用 libmysqlclient.so这个动态库,后面会详细提到如何使用
关于MySQL的账号、密码 以 及库、表的配置不做过多赘述。
2、编译MySQL动态库
1)找到MySQL的项目位置
//Qt的安装目录下 找到MySQL项目
/opt/Qt5.14.2/5.14.2/Src/qtbase/src/plugins/sqldrivers/mysql
路径下所包含的文件如下,需要对mysql.pro文件进行处理
处理如下:
//修改mysql.pro文件
//使用vim打开mysql.pro
vim 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)
** 进入下方目录**
/opt/Qt5.14.2/5.14.2/Src/qtbase/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($$shadowed($$PWD)/configure.pri)//本句为新添加
PLUGIN_TYPE = sqldrivers
load(qt_plugin)
DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII
//修改结果如下
到此,编译前的准备工作结束了
在此之间,需要保证Qt已经安装(我安装的版本是5.14.2),并且安装时勾选了 Sources 这个很重要
执行qmake,制作MakeFile
//进入目录
/opt/Qt5.14.2/5.14.2/Src/qtbase/src/plugins/sqldrivers/mysql
//使用如下 qmake 命令 请详细阅读后自行修改
sudo /opt/Qt5.14.2/5.14.2/gcc_64/bin/qmake "INCLUDEPATH+=/usr/include/mysql" "LIBS+=-L/usr/lib/x86_64-linux-gnu/ -lmysqlclient" mysql.pro
//如果有关于 no find -lmysqlclient 相似语句出现,
//是因为在/usr/lib/x86_64-linux-gnu/目录下未能找到 libmysqlclient.so 这个动态链接库所致
//可以使用 find / -name libmysqlclient.so 查找到 libmysqlclient.so 的目录用于替换
//"LIBS+=-L/usr/lib/x86_64-linux-gnu/ -lmysqlclient"
//另外也有使用
//"LIBS+=-L/usr/lib/mysql -lmysqlclient_r"
//这样目录完成的
以上步骤完成,将出现Makefile文件
执行make
找到生成的libqsqlmysql.so,使用cp /mv命令复制转移到如下目录即可
/opt/Qt5.14.2/5.14.2/gcc_64/plugins/sqldrivers
至此编译完成,如有问题,可以留言,看见就会解答