码海拾遗

但行好事,莫问前程

导航

Ubuntu,QT5连接MySQL

用QT连接MySQL需要共享库 libqsqlmysql.so的驱动,路径在plugin/sqldrivers目录下,乍看已经可用了,其实不然。

用ldd命令分析一下,libmysqlclient_r.so.* => not found ,后明显libmysqlclient_r.so.* 缺少另一个共享库,他们是依赖关系,解决了这个问题QT才能真的连接到MySQL数据库。而我的/usr/lib64/下的共享库版本比较高是 libmysqlclient.so.18,想到了一个比较投机的想法ln创建符号链接,然而这并没有什么卵用。

PS:ldd:linux下分析打印可执行档依赖的共享库文件。

让我哭笑不得是QT5.5是我从官网下载的,居然依赖的是低版本,你们编译的时候能不能不偷懒啊,估计他们直接从低版本拷贝的libqsqlmysql.so,没办法了吗?显然不是,打开qt官网下载源码,自己编译。下载过程略过,非常好找 http://download.qt.io/official_releases/qt/5.5/5.5.1/submodules/ (暂时没有qt5.5的源码),找到qtbase那个大概60M。MySql驱动的路径为qtbase/src/plugins/sqldrivers/mysql/。

  • qmake "INCLUDEPATH+=/usr/include" "LIBS+=-L/usr/lib -lmysqlclient_r" mysql.pro

(include为头文件“mysql.h”的位置,可用“ sudo find -name "mysql.h" ”找找看,lib为共享库到位置)

  • make
  • sudo make install

PS:如果没有没找到“mysql.h”文件,需要安装“mysql-libmysqlclient-dev”

  • sudo apt-get install libmysqlclient-dev

在QT的帮助手册中输入“SQL Database Drivers”,可查看其他数据库到连接方式

这样就能连接MySQL数据库了。

参考资料:

  CentOS7 (64位) 下QT5.5 连接MySQL数据库(driver not loaded)

  fatal error: mysql/mysql.h: No such file or directory 解决方法

posted on 2016-01-15 12:27  widrin  阅读(4207)  评论(0编辑  收藏  举报