(前半部分没有试过,因为我的有mysql驱动,实在抱歉)
1.预防万一,先安装一下mysql-devel(一定要装!)。 不安装的话后面编译会出现找不到-lmysqlclient的问题。
2. 开始编译:
cd $QTDIR/src/plugins/sqldrivers/mysql //进入QT那个存放mysql驱动源码的目录``
qmake "INCLUDEPATH+=/usr/include/mysql" "LIBS+=-L/usr/lib/mysql -lmysqlclient_r" mysql.pro
//这一句中我修改一下了qt助手里的语句,因为我的mysql库的位置是在/usr/include/mysql,/usr/lib/mysql 中。
make //然后make一下
3. 最后一步
cd $QTDIR/src/plugins/sqldrivers/mysql //这里也是进入那个目录``
make install //生成, 在上面make那步好像也生成过的了,不过这一步还是要做一下··
4. 完成
你可以在/qtsdk-2009.05/qt/plugins/sqldrivers里找到一个刚生成的libqsqlmysql.so,这个就是mysql的驱动
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE
看到网上不知道是否是真的有用的,基本都说编译什么Mysql驱动,缺少libqsqlmysql.so,说的……………………不好评论,我是看不懂。
但是我查证我的安装目录是有libqsqlmysql.so的,现在只能考虑是不是目录路径不对,但是我可以编译通过,就是执行报错,对此也表示怀疑,暂且就把目录路径都加到系统搜索路径(更改PATH环境变量,把库拷到/usr/lib64等等,没招了)。
问题依然没有解决,原地踏步,下面是关键。
分析上面的错误:QSQLITE可用,但是QMYSQL 不可用,
再进一步分析,这两个的依赖库(libqsqlite.so libqsqlmysql.so)是存在目录都是相同的,就开始怀疑是库所依赖的东西出了问题,现在ldd libqsqlmysql.so显示:
果然有问题,看到上面的libmysqlclient.so.18 => not found,这就是问题所在,下面就开始解决:
(1)先找到libmysqlclient.so.18 的所在路径,find / -name libmysqlclient.so.18
(2) vim /etc/ld.so.conf 在最后添加一行(就是刚刚的搜索到的路径),意告诉系统libmysqlclient.so.18去那个路径下寻找。
(3)ldconfig 必须导入刚刚的配置。
(4) 再次运行ldd libqsqlmysql.so显示不再是not found:
好了,现在回到关键问题,执行Qt程序,惊喜,成功了。关于/etc/ld.so.conf 的介绍博客有介绍。