(前半部分沒有試過,因為我的有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的驅動
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 的介紹博客有介紹。