Qt報的錯誤也是這個:
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7
上文的方法只提到其中兩個錯誤障涯,這一篇是說另一個錯誤罐旗,在無法找到的依賴項中,多了一個:
libmysqlclient.so.18 => not found
實際上唯蝶,在電腦中查找libmysqlclient.so.
發(fā)現(xiàn)目錄/usr/lib/x86_64-linux-gnu
下九秀,有更高版本的庫:
libmysqlclient.so.20
網(wǎng)上一些方法說在這個目錄下,用下面的指令做個軟連接:
sudo ln -s libmysqlclient.so.20 libmysqlclient.so.18
我試了粘我,不行鼓蜒,它要求低版本的軟件支持。
經(jīng)過一番思考和查找涂滴,想起來之前查看依賴庫是用的ldd libqsqlmysql.so
友酱,也就是查看的libqsqlmysql.so
的依賴,說明問題在它這里柔纵,是它依賴的版本太低了缔杉,于是我猜測重新編譯它就可以解決問題。答案是搁料,這是個很機智的想法或详,確實是Qt的依賴庫太老了系羞。下面是具體的做法。
1 兩個目錄
在電腦中搜索霸琴,找到mysql.h和libmysqlclient.so的位置椒振,記下來它們所在的目錄。
我的電腦上梧乘,兩個文件所在的目錄如下:
mysql.h :/usr/include
libqsqlmysql.so:/usr/lib/x86_64-linux-gnu
2 編譯MySQL驅(qū)動庫
1 qmake
首先要進入Qt MySQL驅(qū)動庫源碼所在的目錄澎迎,可以搜索mysql文件夾,找到屬于qt下面的一個选调〖泄可以參考一下我電腦的路徑:
~/Qt5.8.0/5.8/Src/qtbase/src/plugins/sqldrivers/mysql
在終端進入該路徑,執(zhí)行:
qmake -o Makefile "INCLUDEPATH+=/usr/include" "LIBS+=/usr/lib/x86_64-linux-gnu/libmysqlclient.so" mysql.pro
把命令中的兩個路徑替換成上面的步驟得到的路徑就可以了仁堪。如果提示qmake找不到之類的問題哮洽,可能需要設置一下默認的編譯器位置:
cd /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/
sudo gedit default.conf
把里面qmake的路徑替換成自己的,可以搜索一下自己的在哪里弦聂。
然后回到剛才的目錄重新執(zhí)行qmake的那條命令鸟辅。
成功后執(zhí)行make
。
2 替換
完成后就得到了新的libqsqlmysql.so莺葫,搜索一下電腦里的libqsqlmysql.so匪凉,找到最新的那個(創(chuàng)建日期最新),用它替換掉其他的同名的就可以了徙融。