玩命加载中 . . .

Ubuntu下Qt5连接MySql出现的问题


瞎折腾了好几天,终于解决了!

编译之类的太麻烦了,直接用‘成功人士’的劳动果实吧!
先把libmysqlclient_r.so.16文件下载下来,下载地址:https://www.lanzous.com/i7iv9ej
Ubuntu16 32位、64位的都有,亲测OK

问题:

QSqlDatabase: QMYSQL driver not loaded

一、32位系统

(1)首先进入终端,运行命令cd /home/ubuntu/Qt5.4.0/5.4/gcc/plugins/sqldrivers/的目录下,然后使用ldd libqsqlmysql.so查看所有依赖关系

linux-gate.so.1 =>  (0xb773d000)
    libmysqlclient_r.so.16 => not found
    libQt5Sql.so.5 => /home/ubuntu/Qt5.4.0/5.4/gcc/plugins/sqldrivers/./../../lib/libQt5Sql.so.5 (0xb76cf000)
    libQt5Core.so.5 => /home/ubuntu/Qt5.4.0/5.4/gcc/plugins/sqldrivers/./../../lib/libQt5Core.so.5 (0xb718b000)
    libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xb7014000)
    libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb6e5e000)
    libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xb6e41000)
    libicui18n.so.53 => /home/ubuntu/Qt5.4.0/5.4/gcc/plugins/sqldrivers/./../../lib/libicui18n.so.53 (0xb6bea000)
    libicuuc.so.53 => /home/ubuntu/Qt5.4.0/5.4/gcc/plugins/sqldrivers/./../../lib/libicuuc.so.53 (0xb6a6a000)
    libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb6a65000)
    libgthread-2.0.so.0 => /usr/lib/i386-linux-gnu/libgthread-2.0.so.0 (0xb6a62000)
    librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xb6a59000)
    libglib-2.0.so.0 => /lib/i386-linux-gnu/libglib-2.0.so.0 (0xb6930000)
    libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb68da000)
    libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb68bd000)
    /lib/ld-linux.so.2 (0x80065000)
    libicudata.so.53 => /home/ubuntu/Qt5.4.0/5.4/gcc/plugins/sqldrivers/./../../lib/libicudata.so.53 (0xb5434000)
    libpcre.so.3 => /lib/i386-linux-gnu/libpcre.so.3 (0xb53bf000)

(2)发现问题
libmysqlclient_r.so.16 => not found
(3)解决问题libmysqlclient_r.so.16 => not found
3-1 把上面下载得到的压缩包解压,打开32位的那个文件,见该文件下的libmysqlclient_r.so.16文件复制到Ubuntu桌面,Crtl+Alt+T进入终端,执行例如以下命令

sudo cp /home/ubuntu/Desktop/libmysqlclient_r.so.16 /usr/lib/i386-linux-gnu/

3-2 再次进入cd /home/ubuntu/Qt5.4.0/5.4/gcc/plugins/sqldrivers/目录下,运行

ldd libqsqlmysql.so

查看libmysqlclient_r.so.16 => not found问题是否存在,不存在重启Qt即可

二、64位系统

(1)首先打开终端,运行命令cd /home/ubuntu/Qt5.7.0/5.7/gcc_64/plugins/sqldrivers,然后使用ldd libqsqlmysql.so查看所有依赖关系,发现存在如下3个问题

libmysqlclient_r.so.16 => not found

libssl.so.10 => not found

libcrypto.so.10 => not found

(2)解决问题libmysqlclient_r.so.16 => not found
把上面下载得到的压缩包解压,打开64位的那个文件,将该文件下的libmysqlclient_r.so.16文件复制到Ubuntu桌面,Crtl+Alt+T进入终端,执行例如以下命令

sudo cp /home/ubuntu/Desktop/libmysqlclient_r.so.16 /usr/lib/x86_64-linux-gnu

(3)解决问题libssl.so.10 => not foundlibcrypto.so.10 => not found
终端执行

sudo apt-get install libssl1.0.0 libssl-dev

cd /lib/x86_64-linux-gnu

sudo ln -s libssl.so.1.0.0 libssl.so.10        //建立软连接

sudo ln -s libcrypto.so.1.0.0 libcrypto.so.10   //建立软连接

(4)再次进入cd /home/ubuntu/Qt5.7.0/5.7/gcc_64/plugins/sqldrivers目录下,运行

ldd libqsqlmysql.so

查看以下问题是否存在

libmysqlclient_r.so.16 => not found

libssl.so.10 => not found

libcrypto.so.10 => not found

不存在重启Qt即可,如存在其中一个检查一下以上操作是否有误或者按以上步骤重新操作。
相信操作无误的话,无论32位还是64位再次ldd libqsqlmysql.so,问题都不复存在。


  目录