用QT連接MySQL需要共享庫 libqsqlmysql.so的驅動,路徑在plugin/sqldrivers目錄下,乍看已經可用了,其實不然。
用ldd命令分析一下,libmysqlclient_r.so.* => not found ,後明顯libmysqlclient_r.so.* 缺少另一個共享庫,他們是依賴關系,解決了這個問題QT才能真的連接到MySQL數據庫。而我的/usr/lib64/下的共享庫版本比較高是 libmysqlclient.so.18,想到了一個比較投機的想法ln創建符號鏈接,然而這並沒有什麼卵用。
PS:ldd:linux下分析打印可執行檔依賴的共享庫文件。
讓我哭笑不得是QT5.5是我從官網下載的,居然依賴的是低版本,你們編譯的時候能不能不偷懶啊,估計他們直接從低版本拷貝的libqsqlmysql.so,沒辦法了嗎?顯然不是,打開qt官網下載源碼,自己編譯。下載過程略過,非常好找 http://download.qt.io/official_releases/qt/5.5/5.5.1/submodules/ (暫時沒有qt5.5的源碼),找到qtbase那個大概60M。MySql驅動的路徑為qtbase/src/plugins/sqldrivers/mysql/。
(include為頭文件“mysql.h”的位置,可用“ sudo find -name "mysql.h" ”找找看,lib為共享庫到位置)
PS:如果沒有沒找到“mysql.h”文件,需要安裝“mysql-libmysqlclient-dev”
sudo apt-get install libmysqlclient-dev
在QT的幫助手冊中輸入“SQL Database Drivers”,可查看其他數據庫到連接方式
這樣就能連接MySQL數據庫了。
參考資料:
CentOS7 (64位) 下QT5.5 連接MySQL數據庫(driver not loaded)
fatal error: mysql/mysql.h: No such file or directory 解決方法