(前半部分没有试过,因为我的有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的驱动

 (下面是我遇到的情况)
   首先我的Linux系统,64位的Centos,Qt版本4.8.4安装方式前面博客说过了
   好了,现在先说遇到的问题,可以编译通过,就是执行报错:
   Available drivers: "QSQLITE" 

   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 的介绍博客有介绍。

     

centos 下Qt安装 mysql驱动(亲测可行)的更多相关文章

  1. Mac下Qt连接MySQL 驱动问题

    Mac OS X下Qt的mySQL driver编译安装 原创文章,采用CC协议发布,转载请注明: 转载自canX.me 本文链接地址: Mac OS X下Qt的mySQL driver编译安装 – ...

  2. CentOS 下编译安装MySQL

    CnetOS 下编译安装 MySql 查看是否存在旧版本: rpm -qa | grep mysql 卸载旧版本: rpm -e mysql   #普通删除模式 rpm -e --nodeps mys ...

  3. Window下 Qt 编译MySQL驱动(居然用到了动态库格式转换工具)

    一步步在Window下开发Qt 今天开始安装MySQL,看了些关于MySQL安装的博文,方法大致相同,但是遇到的细节问题各有不同,或者没有讲全面,下面来说说个人的安装过程及遇到的问题. 1.首先下载, ...

  4. CentOS下编译安装MySQL 5.6.21

    一.编译安装MySQL前的准备工作 安装编译源码所需的工具和库 yum install gcc gcc-c++ ncurses-devel perl 安装cmake:http://www.cnblog ...

  5. 阿里云,CentOS下yum安装mysql,jdk,tomcat

    首先说明,服务器是阿里云的,centos6.3_64位安全加固版.首先需要登陆进来,使用的是putty,因为最初的时候,Xshell登陆会被拒绝. 0. 创建个人文件夹 # 使用 yum 安装tomc ...

  6. CentOS下yum安装mysql,jdk以及tomcat

    首先说明,服务器是阿里云的,centos6.3_64位安全加固版.首先需要登陆进来,使用的是putty,因为最初的时候,Xshell登陆会被拒绝. 0. 创建个人文件夹 # 使用 yum 安装tomc ...

  7. CentOS下yum安装mysql

    其实跟windows下安装过程差别不大,就是下载为了方便使用了yum的方式.安装前先确认下系统是否还安装mysql,卸载是否不完全,再去官网(http://dev.mysql.com/download ...

  8. centos下在线安装mysql

    1 首先查看是否有安装过,如果已经安装过,就不必再安装了 yum list installed mysql* rpm -qa | grep mysql* 2 查看有没有安装包: yum list my ...

  9. centos下的安装mysql,jdk

    mysql: 如果你是用rpm安装, 检查一下RPM PACKAGE:rpm -qa | grep -i mysql如果mysql已经安装在本机,则会列出mysql安装过的文件 ,像mysql-ser ...

随机推荐

  1. Discuz常见小问题-如何修改板块和分区

    1 论坛-版块管理,然后添加一个版块名称(我把版块名称跟前面的主导航对应起来,比如都是论坛首页,在论坛首页下面放了三个版块,最新产品信息,最新培训信息,最新专题讨论) 2 点击编辑按钮 3 如果我设置 ...

  2. CheeseZH: Stanford University: Machine Learning Ex3: Multiclass Logistic Regression and Neural Network Prediction

    Handwritten digits recognition (0-9) Multi-class Logistic Regression 1. Vectorizing Logistic Regress ...

  3. IO介绍

    IO在计算机中指Input/Output,也就是输入和输出.由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘.网络等,就需要IO接口. 比如你打开 ...

  4. (C++)UrlEncode的标准实现

    http://blog.163.com/xiaopengyan_109/blog/static/149832173201072685539394/ 地址栏传中文参数后是什么编码格式 网页中的表单使用P ...

  5. Gradle修改Maven仓库地址

    博客已经搬家https://www.tianmingxing.com 背景 不知从什么时候大家开始使用gradle管理项目了,随着时间的推移从maven转过来的人肯定越来越多.关于gradle的优势在 ...

  6. java面试第七天

    反射: 反射:在运行时动态分析或使用一个类进行工作. java.lang.Class类:描述类信息的类. 类对象:描述一个类信息的对象,当虚拟机加载类的时候,就会创建这个类的类对象并加载该对象,Cla ...

  7. jdbc第二天

    事务 l 连接池 l ThreadLocal l BaseServlet自定义Servlet父类(只要求会用,不要求会写) l DBUtils à commons-dbutils 事务 l 事务的四大 ...

  8. CSS3 calc()函数使用

    1.calc是什么? calc是英文单词calculate(计算)的缩写,用于动态计算长度值. calc()函数支持 "+", "-", "*&quo ...

  9. Socket实现服务器与客户端的交互

       连接过程:   根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认. (1)服务器监听:是服务器端套接字并不定位具体的客户端套接 ...

  10. getattr和setattr

    >>> class MyData(): def __init__(self,name,phone): self.name=name self.phone=phone def upda ...