ubuntu 下面配置QT mysql環境
這次配環境真的有點噁心我了,所以寫博客,爲了儘量不噁心別人
參考鏈接1
參開鏈接2
參考鏈接3
一 首先必須安裝Qt鏡像以及mysql
安裝的時候qt選擇全部,這樣就包含源文件,後面出現問題可以自己編譯文件,沒有選擇全部的話到上面地址中下載對應的源碼,submoudle下面qtbase-src大概這樣的文件
二 測試代碼
如果代碼能夠直接運行最好不過了
#include <QApplication>
#include <QMessageBox>
#include <QDebug>
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlDriver>
#include <QtSql/QSqlError>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
qDebug() << QCoreApplication::libraryPaths();
qDebug() << QSqlDatabase::drivers()<<endl; /*列出qt可用的數據庫*/
/*
* 鏈接mysql數據庫
*/
QCoreApplication::addLibraryPath("/home/zeroxf/workspace/QT/5.8/gcc_64/plugins/sqldrivers/libqsqlmysql.so");
QSqlDatabase db(QSqlDatabase::addDatabase("QMYSQL"));
db.setHostName("127.0.0.1");
db.setDatabaseName("TestDB");
db.setUserName("root");
db.setPassword("liangxianfeng");
if (!db.open()) /*測試數據庫是否鏈接成功*/
{
QMessageBox::critical(0, QObject::tr("Databse Error"), db.lastError().text());
qDebug() << db.lastError() << endl;
}
else
{
qDebug() << "Ok" << endl;
}
return 0;
}
正確運行結果,如果正確了,那就皆大歡喜,跳過以下所有步驟
(“QSQLITE”, “QMYSQL”, “QMYSQL3”, “QPSQL”, “QPSQL7”)
Ok
失敗結果
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QPSQL QPSQL7
QSqlError(“”, “Driver not loaded”, “Driver not loaded”)
三 重新編譯libqsqlmysql.so
到Qt5.8.0/5.8/gcc_64/plugins/sqldrivers,(你的對應安裝目錄)下面,運行下面命令
ldd libqsqlmysql.so
你會發現
xx.so =>> not found
這裏就是說庫文件存在依賴問題,需要自己編譯
cd ~/Qt5.8.0/5.8/Src/qtbase/src/plugins/sqldrivers/mysql
qmake “INCLUDEPATH+=/usr/include/” “LIBS+=-L/usr/lib/ -lmysqlclient” mysql.pro
make
cp libqsqlmysql.so ~/Qt5.8.0/5.8/gcc_64/plugins/sqldrivers
includepath就是mysql.h的位置,以及libs是mysqlclient.so的位置,好像有的人會是mysqlclient_r,這裏依照你那裏命名的,自己改或者用ls -s 弄個映射
你
我遇到的問題
make 找不到mysql.h
首先sudo find / -name mysql.h,能找到的話就添加到includepath,不能的話就安裝libmysqlclient-dev
sudo apt-get install libmysqlclient-dev
make 找不到qsqlerror.h
如果還報找不到qsqlerror.h,那麼可能是你在用qt4的qmake編譯,這裏就需要修改環境變量了,參考鏈接
usr/bin/ld: cannot find -lxxx
我這裏缺少
libssl.so.10 => not found
libcrypto.so.10 => not found
那麼這裏很可能是這個庫文件沒有安裝,或者路徑設置問題,那麼先去看是否安裝或者find查找,參考鏈接