自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

詳解Linux下QT平臺(tái)Mysql數(shù)據(jù)庫(kù)開發(fā)環(huán)境配置

移動(dòng)開發(fā)
Linux下QT平臺(tái)Mysql數(shù)據(jù)庫(kù)開發(fā)環(huán)境配置是本文要介紹的內(nèi)容,主要是來(lái)了解QT數(shù)據(jù)庫(kù)在Linux開發(fā)環(huán)境下的配置,來(lái)看詳細(xì)內(nèi)容。

LinuxQT平臺(tái)Mysql數(shù)據(jù)庫(kù)開發(fā)環(huán)境配置是本文要介紹的內(nèi)容,主要是來(lái)了解QT數(shù)據(jù)庫(kù)在Linux開發(fā)環(huán)境下的配置,由于之前安裝RedHat的時(shí)候是自動(dòng)選擇安裝了mysql數(shù)據(jù)庫(kù)以及QTdesigner,這一陣子用它的時(shí)候卻因?yàn)樗?strong>數(shù)據(jù)庫(kù)連接中遇到了很大的困難。
問(wèn)題的出現(xiàn):

首先想測(cè)試一下數(shù)據(jù)庫(kù)的連接:選擇Projects-->databaseConnections,彈出一個(gè)EditDatabaseconnections的對(duì)話框,點(diǎn)擊Newconnection,在右邊出現(xiàn)可編輯的選項(xiàng),以下是配置:

  1. Name:default 

Driver:點(diǎn)擊下拉框,沒有反應(yīng),于是我就按照QTAssistant上說(shuō)的填上QMYSQL3

我的數(shù)據(jù)庫(kù)名先使用自帶的mysql

  1. DatabaseName:mysql  
  2. Username:root  
  3. Passworld:********(填上自己設(shè)置的密碼)  
  4. Hostname:mscl 

然后就單擊connect按鈕,彈出

  1. can'tnot connect to the database,Pleaseen sure that the database server is running and that all connection in form ation is correct,  
  2. [Drivernotloaded】

郁悶了很久,究竟驅(qū)動(dòng)是出在什么問(wèn)題上,google了又百度了半天沒有什么頭緒,起始還以為是Mysql數(shù)據(jù)庫(kù)的問(wèn)題,于是將原來(lái)用RPM安裝的Mysql數(shù)據(jù)庫(kù)刪了,重新到到www.mysql.com社區(qū)中下載了個(gè)二進(jìn)制的壓縮包mysql-5.0.45-linux-i686.tar.gz,其本上解壓出來(lái)就可以用了,啟動(dòng)了服務(wù)器,重新按上面的設(shè)置進(jìn)行連接,但是還是出現(xiàn)原來(lái)一樣的問(wèn)題,于是就想如果QT真的是支持MySQL驅(qū)動(dòng)的話,應(yīng)當(dāng)在driver的下拉框中可以看得到的,于是將問(wèn)題懷疑到Qt的驅(qū)動(dòng)中。

于是我就找到QT3的安裝目錄(我的是在/usr/lib/qt3.3/plugins),但是我的卻沒有src/sqldrivers/mysql目錄,沒有mysql驅(qū)動(dòng)的源代碼,編譯MySql驅(qū)動(dòng)就無(wú)從談起,于是又去google看一下有沒有mysql在Qt中的驅(qū)動(dòng)的源代碼,搜了一個(gè)晚上,邊條毛也沒有看到,很晚了就先睡了,究竟還有沒有其它的辦法?(周公尋夢(mèng))。。。
早上8點(diǎn)起床,繼續(xù)吧!

突然起了重新裝一個(gè)QT的想法,沒有辦法了只好試了一下,到IT68中下了個(gè)QT3.1版本的,12來(lái)M吧,然后就開始安裝:

1、選擇安裝路徑

  1. shell>cd/usr/local 

2、解壓下載的安裝包(版本號(hào)不同,下面的編譯過(guò)程可能不同,以源目錄下的INSTALL文件為準(zhǔn))

  1. shell>tar-jxvfqt-x11-free-3.1.2.tar.bz2 

3、設(shè)置環(huán)境變量(后來(lái)發(fā)現(xiàn)這一部分可以不用,因后在后面的.login中已經(jīng)設(shè)置好了)

在我的/etc/bashrc中添加如下幾行:

  1. QTDIR=/usr/local/qt:安裝的根目錄  
  2. PATH=$QTDIR/bin:$PATH:可執(zhí)行文件目錄  
  3. MANPATH=$QTDIR/doc/man:$MANPATH:man文檔目錄  
  4. LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH:庫(kù)文件的目錄 

如果你的安裝路徑不是跟我的一樣,一定要設(shè)成相應(yīng)的。

4、配置configure腳本

我這里選用的都是默認(rèn)配置所以只輸入

  1. shell>./configure 

如果你想改變安裝的路徑,或者是選擇安裝的庫(kù)文件及頭文件的位置,可以使用下面的選項(xiàng)

  1. ./configure-libdir/usr/local/lib-bindir/usr/local/bin-headerdir/usr/local/include/qt 

這樣你的QT的庫(kù)文件,頭文件目錄就在相應(yīng)的目錄下了,但是記住你如果在這里進(jìn)行了設(shè)置也一定要在第三步中的環(huán)境變量中進(jìn)行相應(yīng)的發(fā)動(dòng)。還有一個(gè)--prefix選項(xiàng),該選項(xiàng)設(shè)置qt安裝的目的目錄

5、編譯

  1. shell>make 

這需要比較長(zhǎng)的時(shí)間,我的機(jī)子配置是CPU速龍1.8G,1G內(nèi)存大概用了20來(lái)分鐘。

在編譯過(guò)程中出現(xiàn)了一個(gè)錯(cuò)誤,忘了記下來(lái)了,大概就是說(shuō)在fbm.c中noise3是靜態(tài)的,但是在fbm.h中的聲明是卻是非靜太的,在examples/demo/opengl下找到這兩個(gè)文件,將fbm.h中的floatnoise3(floatvec[])最前面加入static,保存。繼續(xù)鍵入make.

6、安裝

  1. shell>makeinstall  
  2. thisprocessalsotakeservalminutues,soyoushouldbepatient. 

7、安裝完畢后,我找到bin目錄下,運(yùn)行designer,TMD果然行了,一個(gè)QT界面慢慢地展現(xiàn)在我的面前。

把QT安裝完成后,發(fā)現(xiàn)新安裝的QT比原來(lái)的系統(tǒng)自帶安裝的多了幾個(gè)目錄:config.tests,doc,examples,extensions,pics,qmake,src,tools,tutorial,還多了十來(lái)個(gè)文件,當(dāng)然最重要的是在plugins多了sqldrivers(這個(gè)目錄之前是空的,只有在編譯之后才有一個(gè)二進(jìn)制文件:libqsqlmysql.so),還有就是src目錄。

好了,終于有了qt下的mysql驅(qū)動(dòng)源碼,接下來(lái)就按照QtAssistant中說(shuō)的辦法編譯它:

  1. shell>cdusr/local/qt/plugins/src/sqldrivers/mysql  
  2. shell>qmake-oMakefile"INCLUDEPATH+=/usr/local/mysql/include""LIBS+=-L/usr/local/mysql/lib-lmysqlclient"mysql.pro 

第2個(gè)命令就是生成Makefile文件,并將頭文件及庫(kù)文件的目錄添加到選項(xiàng)LIBS,INCLUDEPATH中。其中我的mysql是安裝在/usr/local/mysql下面就是編譯了,還是在原來(lái)的目錄下

  1. shell>make 

到些驅(qū)動(dòng)編譯完了,我到QTdesigner下看一下可不可以識(shí)別這個(gè)驅(qū)動(dòng)。

1、啟動(dòng)designer

  1. [root@msclbin]#/usr/local/qt/bin/designer 

2、還是按照前面的設(shè)置databaseconnections

Name:connect_test(我給這次連接起了個(gè)名)

Driver:點(diǎn)擊下拉框,這時(shí)與前面不同的是,我可以看到QMYSQL3(^_^)

數(shù)據(jù)庫(kù)名還是使用mysql

  1. DatabaseName:mysql  
  2. Username:root  
  3. Passworld:********(填上自己設(shè)置的密碼)  
  4. Hostname:mscl 

然后就單擊connect按鈕,可以在左邊的列表中看到我設(shè)置的這次連接的名字connect_test,花了兩天多終于把它給給連接上了。

下面是編寫代碼來(lái)測(cè)試數(shù)據(jù)庫(kù),代碼的內(nèi)容基本是從QtAssistant拷貝的:

1、部分代碼

  1. voidForm1::init()  
  2. {  
  3. createConnection();  
  4. }  
  5.  
  6.  
  7. boolForm1::createConnection()  
  8. {  
  9. //createthedefaultdatabaseconnection  
  10. QSqlDatabase*defaultDB=QSqlDatabase::addDatabase("QMYSQL3");  
  11. if(!defaultDB){  
  12. qWarning("Failedtoconnecttodriver");  
  13. returnFALSE;  
  14. }  
  15. defaultDB->setDatabaseName("mysql");  
  16. defaultDB->setHostName("mscl");  
  17. defaultDB->setUserName("root");  
  18. defaultDB->setPassword("39323286");  
  19. //defaultDB->setHostName("bookhost");  
  20. if(!defaultDB->open()){  
  21. qWarning("Failedtoopendatabase:"+  
  22. defaultDB->lastError().driverText());  
  23. qWarning(defaultDB->lastError().databaseText());  
  24. returnFALSE;  
  25. }  
  26. returnTRUE;  

2、編譯

  1. [root@msclmscl]#qmake-oMakefiledbcon.pro(myprojectname)  
  2. [root@msclmscl]#make 

3、運(yùn)行

  1. [root@msclmscl]#./dbcon 

出現(xiàn)錯(cuò)誤說(shuō)找不到can'tloadlibrary'libqt.so.3',記在在QT的源文件的安裝說(shuō)明中有這樣的一句話,到Qt的安裝目錄lib下看到這是一個(gè)符號(hào)鏈接,本來(lái)還想把它拷貝到/usr/lib中去解決,但是連接拷貝了也是沒有用的,在lib目錄下又沒有真正的庫(kù)(也許我找不到)。

解決辦法:在/root/目錄下創(chuàng)建一個(gè)名為(.login)文件(具體的請(qǐng)參照QT中的INSTALL),然后在這個(gè)文件中添加以下的變量:

  1. setenvQTDIR/usr/local/qt  
  2. setenvPATH$QTDIR/bin:$PATH  
  3. setenvMANPATH$QTDIR/doc/man:$MANPATH  
  4. setenvLD_LIBRARY_PATH$QTDIR/lib:$LD_LIBRARY_PATH 

添加完畢之后,一定要重新啟動(dòng)計(jì)算機(jī)。我在重新啟動(dòng)之后到/root目錄下看了一下原來(lái)的那個(gè).login文件名已經(jīng)變量了另外一個(gè)文件qt.log~,而且還是隱藏的,但是內(nèi)容還是一樣的。

最后我重新運(yùn)行這個(gè)可執(zhí)行文件,沒有出現(xiàn)上面的問(wèn)題了。但有新問(wèn)題。

  1. [root@msclmscl]#./dbcon  
  2. ./dbcon:errorwhileloadingsharedlibraries:/usr/lib/libmysqlclient.so.15:cannotrestoresegmentprotafterreloc:Permissiondenied 

這里說(shuō)明一下,由于之前我在運(yùn)行的時(shí)候也出現(xiàn)了找不到庫(kù)文件libmysqlclient.so.15,我就到/usr/local/mysql/lib下找到這個(gè)文件,由于它不是個(gè)鏈接,于是我就直接把它拷貝到了/usr/lib目錄下,之后就沒有出現(xiàn)問(wèn)題,但是現(xiàn)在又出現(xiàn)了一個(gè)新的問(wèn)題。于是自己又想是不是訪問(wèn)的權(quán)限不夠,右擊它,將它賦于讀寫的權(quán)限,但是沒有用還是老問(wèn)題。

此時(shí)我注意到我的電腦的右上方出現(xiàn)了一個(gè)五角星,哈哈,按照以往相似的經(jīng)驗(yàn),知道點(diǎn)擊它里面肯定有解決方案,果不出我所料,原來(lái)SELinux阻止了程序加載libmysqlclient.so.15這個(gè)庫(kù),因?yàn)樾枰a的重定位。在AllowAccess標(biāo)簽下有下面的一段話:

  1. Thefollowingcommandwillallowthisaccess:  
  2. chcon-ttextrel_shlib_t/usr/lib/libmysqlclient.so.15 

照做吧:

  1. [root@msclmscl]#chcon-ttextrel_shlib_t/usr/lib/libmysqlclient.so.15  
  2. [root@msclmscl]#./dbcon 

終于正常地彈出了測(cè)試的窗口,至此有前QT的數(shù)據(jù)庫(kù)部分已經(jīng)基本搞好了。

一些待解決的問(wèn)題:有什么辦法讓QT直接到/usr/local/mysql/lib下找libmysqlclient.so.15,這樣我就不用把它拷貝到/usr/lib目錄下了,就你libqt.so.3一樣?慢慢來(lái)吧

12、6號(hào)將上面的這個(gè)問(wèn)題解決了,解決方法:

在/etc/ld.so.conf文件下我們可以看到它的內(nèi)容為:

  1. includeld.so.conf.d/*.conf 

因此它將根據(jù)/etc/ld.so.conf.d目錄下的conf文件來(lái)查找動(dòng)態(tài)庫(kù)(后綴為.so),所以我們可以在這里建立一個(gè)conf文件,將我們的mysql動(dòng)態(tài)鏈接庫(kù)路徑告訴系統(tǒng),內(nèi)容為:

  1. /usr/local/mysql/lib 

保存,然后運(yùn)行l(wèi)dconfig命令,因此此時(shí)系統(tǒng)要求動(dòng)態(tài)庫(kù)要為一個(gè)鏈接符號(hào),而我的/usr/local/mysql/lib下的libsqlclient.so.15并不是一個(gè)鏈接,此時(shí)SELinux阻止了應(yīng)用程序加載這個(gè)動(dòng)態(tài)庫(kù),為了解決這個(gè)問(wèn)題,我們可以運(yùn)行下面這個(gè)命令:

  1. chcon-ttextrel_shlib_t/usr/local/mysql-5.0.45-linux-i686/lib/libmysqlclient.so.15 

最后就OK了。差點(diǎn)給忘記了,重啟啟動(dòng)后,我原來(lái)安裝的Qt3.3.6版本的Qt被剛編譯的Qt3.1替換了(指Applications菜單下的)。

小結(jié):詳解Linux下QT平臺(tái)Mysql數(shù)據(jù)庫(kù)開發(fā)環(huán)境配置的內(nèi)容介紹完了,希望通過(guò)本文的學(xué)習(xí)能對(duì)你有所幫助!

責(zé)任編輯:zhaolei 來(lái)源: 博客園
相關(guān)推薦

2011-06-23 18:37:02

Qt 數(shù)據(jù)庫(kù)

2011-06-10 10:31:57

QT mysql linux

2011-06-29 10:18:20

LINUX QT ARM

2011-07-05 09:35:52

Ubuntu Qt Mysql

2011-04-07 15:02:02

LinuxMySQL數(shù)據(jù)庫(kù)

2011-06-21 15:48:41

2011-06-21 15:58:20

Qt 數(shù)據(jù)庫(kù)

2010-10-15 13:45:20

安裝MySql數(shù)據(jù)庫(kù)

2011-08-15 23:14:34

Oraclerman環(huán)境配置

2011-07-05 10:03:00

Qt MYSQL 數(shù)據(jù)庫(kù)

2011-06-20 09:26:38

Linux qtopia QT

2023-09-21 09:31:24

MySQL數(shù)據(jù)庫(kù)

2010-05-24 18:56:15

2010-04-02 13:59:08

Oracle數(shù)據(jù)庫(kù)

2010-03-10 11:29:47

MySQL數(shù)據(jù)庫(kù)性能調(diào)

2011-06-28 16:56:41

Linux Qt creator

2011-04-25 15:14:38

LinuxQtOpenCV

2011-06-16 17:45:46

Qt Wince

2021-06-03 08:04:13

LinuxMySQL配置

2011-07-05 09:54:04

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)