Qt 访问 MySql 需要 2 个库文件,一个是 Qt 自己的 MySql 驱动插件,另一个是 MySql 的动态链接库,缺一不可。在 Qt 程序里加载 MySql 驱动插件,其依赖于MySql 的动态链接库。
在Windows下,使用Qt5链接MySql应该是一件比较简单的事,但是,Linux下却不见得如此。
背景介绍:
系统环境:Ubuntu 14.04
Qt版本: Qt 5.3.1 (GCC 4.6.1, 32 bit)
MySQL版本:5.6
首先我通过官网下载了Qt的安装包,安装了Qt,安装目录为 _~/Qt5.3.1_,之后通过apt-get安装了MySql。然后使用了一个简单的程序进行MySql的链接测试,发现报错,错误为
QSqlDatabase: QMYSQL driver not loaded |
因为之前在Windows上也遇到了类似的报错,只要找到MySql的安装路径,将libmysql.dll动态库添加到Qt安装目录下的bin目录即可。Linux下又该如何解决呢?
是Linux下MySql库的问题,还是Qt当中MySQL驱动插件的问题?通过命令行进入Qt的安装目录,
connlaio@ubuntu:~/Qt5.3.1/5.3/gcc/plugins/sqldrivers$ ,在终端中键入
ldd libqsqlmysql.so |
说明 MySQL的动态链接库无法找到,但是,在进入 /usr/lib/ 目录下通过find命令发现,MySQL的动态链接库是存在的,不过,名字不同。
find -name "libmysql*" -print |
看来,我们需要重新编译Qt的MySQL驱动插件。找到Qt源码,进入 qtbase/src/sql/ 目录,最简单的方法是将目录下的sql工程添加到Qt中,构建MySQL驱动。 编译完成后到 /qtbase/plugins/sqldriver 目录下就能看到生成的动态库。将新的MySQL驱动插件拷贝到对应的 gcc/plugins/sqldrivers 目录下即可。