Linux RedHat 9 上內建的QT版本是QT3.1.1的,所以想享受QT4的樂趣必須將其升級下,先下載QT4原始包(我找了很久都沒找到rpm包,所以只好自己編譯了)我下的版本為“qt-x11-opensource-src-4.3.4.tar.gz",下載到linux中解壓,我在XWindow中直接右擊“解壓到。。”,呵呵,懶得敲Linux那些煩人的命令。在之前呢,最好先做些工作,不然下面編譯會出錯的。
開啟個終端,輸入:
- ln -s /usr/kerberos/include/com_err.h /usr/include/
- ln -s /usr/kerberos/include/profile.h /usr/include/
- ln -s /usr/kerberos/include/krb5.h /usr/include/
反正在這個系統裡是這樣設定的,不然你編譯一般就會報出一個關於“krb5.h”的錯誤。
其他QT版本,如你下到的:“qt-x11-opensource-src-4.4.3.tar.gz”,還需修改裡面的一些檔案,它會報“`TIFFReadRGBAImageOriented' undeclared”的錯誤,修改方法:開啟 qtiffhandler.cpp 把 TIFFReadRGBAImageOriented(tiff, width, height, reinterpret_cast<uint32 *>(tiffImage.bits()), ORIENTATION_TOPLEFT, 0))改為
TIFFReadRGBAImage(tiff, width, height, reinterpret_cast<uint32 *>(tiffImage.bits()), 0)就好了,因為RedHat 9裡的 usr/include/tiffio.h沒有前一個函數。
下面開始就開始編譯安裝羅,就等吧。
在終端內,cd到解壓出來的檔案下面,然後輸入:
- ./configure
- gmake
- gmake install
整個過程大約需要2個多小時。
安裝好之後就出現下面的介面,對了,它安裝的預設路徑是:/usr/local/Trolltech/Qt-4.3.4下面
下面來配置Qt4的環境變數:
- //開啟 /etc/profile 檔案,在該檔案的末尾加上以下語句:
- PATH=/usr/local/Trolltech/Qt-4.3.4/bin:$PATH
- QTDIR=/usr/local/Trolltech/Qt-4.3.4
- MANPATH=$QTDIR/man:$MANPATH
- LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
- export PATH QTDIR MANPATH LD_LIBRARY_PATH
系統預設開啟的是Qt3,現在我們來修改,啟動Qt3的關聯檔案在“/usr/bin”下面,找到“designer”,我們發現這個檔案果然連結的是Qt3的執行檔案,在清楚了designer是個連結,通過designer指向qt3的designer, 現在想讓designer預設為qt4的designer, 只要重新導向連結。同樣,想要qmake也預設為QT4的也一樣,只要重新導向連結。
- sudo rm /usr/bin/designer
- sudo ln -s /usr/local/Trolltech/Qt-4.3.4/bin/designer /usr/bin/designer
- sudo rm /usr/bin/qmake
- sudo ln -s /usr/local/Trolltech/Qt-4.3.4/bin/qmake /usr/bin/qmake
我的建議最好把那個跟“/usr/local/Trolltech/Qt-4.3.4”下面的執行檔案有關的都修改一下連結。這樣便可以徹底的使用QT4了。
QT4預設的字型會出現亂碼,我們來設定下,開啟qtconfig,選“Forts”按照來設定,其他不變。
開啟qdesigner出現我們盼望已久的QT4介面
下面我們來安裝調試編譯環境,這裡就不選KDevelop系列了,以為安裝起來比較蠻煩,第一RedHat9內建的QT是3.1.1的,要安裝KDevelop3.5(可以調試QT4程式),必須要系統Qt版本>=3.3&&<4.0,我還得把Qt升級到3.3,那還不累死啊,所以這裡我就選用比較輕量級的QDevelop0.26的,我之所以說是輕量級的,是因為其“安裝”(只需要編譯(必須要Qt4.3.x)下,然後使用其執行檔案)時間很短。
下載“qdevelop-0.25.2.tar.gz”,解壓,只需要qmake QDevelop.pro 再make一下,此過程耗時大約十分鐘吧。
編譯如果出現下面的錯誤:
- src/InitCompletion.cpp: In destructor `virtual
- InitCompletion::~InitCompletion()':
- src/InitCompletion.cpp:52: parse error before `+' token
- src/InitCompletion.cpp:53: confused by earlier errors, bailing out
- make: *** [build/o/unix/InitCompletion.o] Error 1
只需要修改src目錄下的InitCompletion.cpp檔案:
- //原檔案
- InitCompletion::~InitCompletion()
- {
- QStringList list = QDir( QDir::tempPath() ).entryList(QStringList() << "qdevelop-completion-*", QDir::Files);
- foreach(QString file, list)
- {
- QFile( QDir::tempPath()+"/" + file ).remove();
- }
- ........................
- }
- // 修改如下
- InitCompletion::~InitCompletion()
- {
- QStringList list = QDir( QDir::tempPath() ).entryList(QStringList() << "qdevelop-completion-*", QDir::Files);
- foreach(QString file, list)
- {
- QString str = QDir::tempPath()+"/";
- QFile( str + file ).remove();
- }
- ........................
- }
編譯好之後便可以運行使用了。
我們來建立一個工程,先感覺下:
QDevelop的缺點就是不能正常顯示中文,鬱悶,我只好在其他地方寫好,然後粘貼過來。
編譯、運行:
下面給我們的程式在案頭上按個家:
這樣就可以跟在windows下面開發差不多了。增加了開發效率。