基于Linux 安裝與建立 Qt 桌面開發(fā)運行環(huán)境
基于Linux 安裝與建立 Qt 桌面開發(fā)運行環(huán)境是本文呢文要介紹的內(nèi)容,本人認為虛擬機是***的朋友,先來看本文介紹。
1.下載Qt
在TrollTech網(wǎng)站http://www.trolltech.com/developer/ 上搜索下載Qt的相關(guān)包,包括
- qt-embedded-free-3.3.4.tar.gz
- qt-x11-opensource-src-4.2.3.tar.gz
tmake-1.8.tar.gz #可以不要,因為有現(xiàn)在這些高版本的qt-embedded,qt-x11,qtopia里就有qmake
這些都是***的Qt版本,編譯過程好像跟查資料時的老版本的步驟有很大的不同,比如新版本使用qmake而不像以前使用tmake,還有configure腳本文件配置時的參數(shù)有許多變化,編譯時沒有什么資料可以查,除了trolltech本身的一些文檔,剩下的只好自己摸索了。
2.安裝與編譯
假設(shè)我把這些包都放在 /root/qt 下
解壓qt-x11-opensource-src-4.2.3.tar.gz
- tar vxzf qt-x11-opensource-src-4.2.3.tar.gz
- export QT2DIR=$PWD/qt-x11-opensource-src-4.2.3 #設(shè)置一下環(huán)境變量
解壓qt-embedded-free-3.3.4.tar.gz
- tar vxzf qt-embedded-free-3.3.4.tar.gz
- export QTEDIR=$PWD/qt-embedded-free-3.3.4
解壓tmake-1.8.tar.gz #后來發(fā)覺一開始 tmake是沒用的因為 2.0以上大版本有了qmake,不過開發(fā)的時候可以選擇用的,比較方便。
- export TMAKEDIR=$PWD/tmake-1.8
然后就是編譯了。
開始發(fā)現(xiàn)老是要設(shè)置環(huán)境變量,所以我專門各編輯一個腳本文件對 qt-x11-opensource-src-4.2.3和 qt-embedded-free-3.3.4進行編譯,分別放在各自的目錄中。
編譯 qt-x11-opensource-src-4.2.3 時腳本為:
- #!/bin/sh
- export QT2DIR=/root/qt/qt-x11-opensource-src-4.2.3
- export QTEDIR=/root/qt/qt-embedded-free-3.3.4
- export QTDIR=$QT2DIR
- export PATH=$QTDIR/bin:$PATH
- export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
- ./configure -prefix-install -opengl
其實這里應(yīng)該還可以設(shè)置更多多的選項,比如去掉一些支持,
可以縮短編譯時間,因為這個工程編譯完要用幾個小時??!
因為我需要的opengl的支持,所以選擇了這個選項。
其他的可以通過./configure --help 命令研究一下。
- make
然后就可以干其他的事情了,編譯時超痛苦,那個多文件阿,用了一上午才搞定,所以這時你可以盡情去玩一下了。
編譯好之后還要去qt-x11-opensource-src-4.2.3/tools/qvfb編譯 qvfb工具(這個工具編譯qt-embedded有用),make一下就可以了。
然后就編譯 qt-embedded-free-3.3.4,下面是的腳本:
- #!/bin/sh
- export QT2DIR=/root/qt-x11-opensource-src-4.2.3
- export QTEDIR=/root/qt-embedded-free-3.3.4
- export QTDIR=$QTEDIR
- export PATH=$QTDIR/bin:$PATH
- export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
- cp $QT2DIR/bin/uic $QTEDIR/bin/ #下面這兩個工具編譯時要使用
- cp $QT2DIR/bin/qvfb $QTEDIR/bin/
- ./configure -qconfig qpe -qvfb -depths 4,8,16,32
- make
又是好長一段編譯時間,大概一個小時左右。
3.在virtual framebuffer里運行程序
編譯好后就可以嘗試編譯 運行examples/ 的例程了,但是編譯這些例子的時候有個很奇怪的錯誤:
- Some of the required modules (large-config) are not available
網(wǎng)上查了一下,幸虧查到了僅有一個提問,而且有人決絕了, 說要修改每個例子下的.pro文件,把 requires = large-config 這一行注釋掉,但這一行原來真正有什么用,去掉后會有什么影響,我不得而知,不過編譯后還是可以在virtual framebuffer上運行的。
編譯好例子后就可以運行了,一開始運行例子的時候總會有一個錯誤:/usr/lib/qt-3.3/lib/fonts/fontdir 沒找到什么的,我就奇怪了,我的qt并沒有安裝在這個目錄的(按照上面的腳本文件),查看一下環(huán)境變量,居然有一個QTDIR非臨時變量(在多個shell中都會顯示的,應(yīng)該在配置文件寫死的)指向了這個目錄,再進這個目錄查看一下文件的日期,都是很久之前的,絕不是剛剛編譯的,才知道這個是操作系統(tǒng)自帶的qt。于是每次運行時qt程序時需要用export把QTDIR改掉,改成 $QTEDIR 同時也把 $QTEDIR/bin 添加到 PATH 中,因為 要用這個目錄下的qvfb程序是 qt程序運行在virtual framebuffer上,運行時執(zhí)行:
- qvfb -width 640 -height 480 &
- sleep 10 #不知道這個有什么用?不過好像可以使qvfb在后臺運行
- ./launcher -qws #launcher是examples的一個例子
如果成功的話qt程序就會運行在qvfb的界面里。
4.編寫自己的qt程序
下面可以自己編寫自己的程序了。
先設(shè)置一下環(huán)境變量,我這個系統(tǒng)比較郁悶,有老的qt,所以好把QTDIR設(shè)置成新編譯都目錄,覆蓋原來的,這個很重要,否則無法通過編譯,這個弄了我一個晚上才發(fā)現(xiàn)。
首先修改環(huán)境變量
- export QTDIR=/root/qt-embedded-free-3.3.4 #把老的qt覆蓋
- export PATH=/root/qt-embedded-free-3.3.4/bin:$PATH #要使用qmake程序
我編寫了以下代碼,hello.cpp,并把這個文件保存在名為hello的目錄下
- #include <qapplication.h>
- #include <qlabel.h>
- int main(int argc, char **argv)
- {
- QApplication app (argc, argv);
- QLabel *hello = new QLabel("<h2><fontcolorfontcolor=blue>Hello<i>Qt/Embedded!</i> </font> </h2>", 0);
- app.setMainWidget(hello);
- hello->show();
- return app.exec();
- }
進入hello目錄,生成.pro文件
- qmake -project
也可以用tmake-1.8/bin下的progen工具生成.pro文件,tmake其中的一個使用就是這里了,不過要把tmake-1.8/bin的完整路徑加入到環(huán)境變量PATH中
修改hello.pro文件為
- TEMPLATE = app
- TARGET = hello
- CONFIG = qt warn_on release
- DEPENDPATH = /root/qt-embedded-free-3.3.4/include
- HEADERS =
- SOURCES = hello.cpp
- INTERFACES =
生成Makefile
- qmake -o Makefile hello.pro
- 或者用
- tmake -o Makefile hello.pro
然后
- make
就可以了
- qvfb -width 320 -height 240 &
- sleep 10
- ./hello -qws
大功告成,你可以欣賞自己的Qt程序了。
小結(jié):關(guān)于基于Linux 安裝與建立 Qt 桌面開發(fā)運行環(huán)境的內(nèi)容介紹完了希望本文對你會有幫助!