Ubuntu10.04下如何移植QtE?
Ubuntu的所有發(fā)行版本都可以免費獲取,所以使用Ubuntu系統(tǒng)的用戶也越來越多。下文是介紹Ubuntu10.04下如何移植QtE的方法,具體內(nèi)容如下所述。
最近弄QTE的移植,真是不勝其煩。現(xiàn)在把他整理出來,作為分享。
首先是軟件包的各個版本
Ubuntu10.04
qt-everywhere-opensource-src-4.6.3.tar.gz
arm-linux-gcc-3.4.1.tar.bz2
qt-sdk-linux-x86-opensource-2010.04.bin
tslib-1.4.tar.gz
一.選擇交叉編譯器
我不知道,移植QT對交叉編譯器有固定的版本要求。我查了很多資料,也沒得到個什么確切的說法。比較靠譜的一個說法是“arm-linux-gcc3.4.1算是一個已經(jīng)比較舊的版本了,現(xiàn)在我們在Linux2.6.29環(huán)境下,用的是4.3.2的編譯器。不過,因為還有一個S3C2410+Linux2.4.18的產(chǎn)品線,所以仍然沒有舍棄3.4.1。”。而且在其他參數(shù)配置相同的情況下,我用自己編譯的arm-softfloat-linux-gnu-gcc3.4.5總是會提示這樣那樣的錯誤。對此我辦法解釋,只好用arm-linux-3.4.1.
安裝arm-linux-3.4.1。這個比較簡單:
(1).解壓
#tar-jxvfarm-linux-gcc-3.4.1.tar.bz2得到一個usr文件夾。
(2).添加環(huán)境變量:
#vi/etc/bash.bashrc
在末尾加上:exportPATH=$PATH:/*解壓所在文件夾*/usr/local/arm/3.4.1/bin:
(3).使新的環(huán)境變量生效:
#source/etc/bash.bashrc
(4).檢查路徑是否設(shè)置正確:
#echo$PATH
(5).檢查交叉編譯工具是否安裝成功:
#arm-linux-gcc-v
出現(xiàn)版本信息就OK了
二.編譯tslib1.4
(1)解壓源代碼:
tarzxvftslib-1.4.tar.gz
cdtslib-1.4
(2)安裝一些工具:
sudoapt-getinstallautomakelibtool
(3)執(zhí)行腳本生成configure文件
./autogen.sh
(4)執(zhí)行configure生成Makefile文件
echo“ac_cv_func_malloc_0_nonnull=yes”>$ARCH-linux.cache
./configure--host=arm-linux--cache-file=$ARCH-linux.cache--prefix=/home/linux/tslib-3.4.1
(5)編譯安裝
- make
- makeinstall
(6)拷到板子文件系統(tǒng)上
- cp-a/home/linux/tslib-3.4.1/source/rootfs
(7)修改ts.conf文件
- vimts.conf
將第二行的#module_rawinput的"#"去掉,并使module_rawinput頂格。
(8)設(shè)置開發(fā)板的環(huán)境變量。這里寫成腳本文件
- vimqtsetenv.sh
- exportTSLIB_ROOT=/tslib-3.4.1
- exportTSLIB_TSDEVICE=/dev/event0
- exportTSLIB_CONFFILE=/tslib-3.4.1/etc/ts.conf
- exportTSLIB_PLUGINDIR=/tslib-3.4.1/lib/ts
- exportTSLIB_CALIBFILE=/etc/pointercal
- exportPOINTERCAL_FILE=/etc/pointercal
- exportTSLIB_FBDEVICE=/dev/fb0
- exportQWS_SIZE=320x240
- exportQWS_DISPLAY="LinuxFb:mmWidth100:mmHeight130:0"
- exportLD_LIBRARY_PATH=/tslib-3.4.1/lib:$LD_LIBRARY_PATH
- exportQWS_MOUSE_PROTO=Tslib:/dev/event0
- exportTSLIB_CONSOLEDEVICE=none
- exportTSLIB_TSEVENTTYYPE=H3600i
(9)測試。可以運行/tslib/bin下的測試文件了。
三.編譯和安裝QTE
移植QTE,一般要安裝3個版本,一個PC機(jī)上的,一個ARM板子上的,一個是沒有ARM板子時候仿真用的x86版。
1.首先安裝PC版。
這個版本安裝方法不少,有的使用qt-sdk-linux-x86-opensource-2010.04.bin,有的使用qt-x11-opensource-src-4.5.0.tar.bz2這樣的文件,在Ubuntu下甚至可以方便的使用apt-get:sudoapt-getinstallqt4-dev-toolsqt4-docqt4-qtconfigqt4-demosqt4-designer,這樣獲取文件和庫的最全,designer還是中文界面,不要環(huán)境設(shè)置等等。但是仍有所不便。這里使用bin文件。
(1)進(jìn)入qt-sdk-linux-x86-opensource-2010.04.bin所在目錄,設(shè)置該文件的權(quán)限為可執(zhí)行.
- chmod+xqt-sdk-x86-opensource-2010.04.bin
(2)安裝qt-sdk-linux-x86-opensource-2010.04.bin
- ./qt-sdk-linux-x86-opensource-2010.04.bin
按默認(rèn)設(shè)置安裝就行。安裝路徑我設(shè)置為:/host/mylinux/QT/qtsdk-2010.04
(3)設(shè)置環(huán)境變量
這里也可以設(shè)置腳本文件,方便不同版本的qmake.但是這里奇怪的是,我的腳本文件運行了沒效果,不知道怎么搞的。我只好寫進(jìn)系統(tǒng):
- vim/etc/profile
在末尾添加:
QTDIR=/host/mylinux/QT/qtsdk-2010.04/qt-//這是設(shè)置QT的所在的路徑
exportPATH=$QTDIR/bin:$PATH//設(shè)置QT可執(zhí)行命令的目錄
exportLD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH//設(shè)置QT庫文件目錄
(4)建立helloworld工程,測試qt。
由于Ubuntu10.04系統(tǒng)不帶g++編譯器,而qt需要用到g++編譯器,我們需要自行安裝g++:
- sudoapt-getinstallg++
編寫一個hello.cpp文件(放在一個hello的目錄里)
Hello.cpp內(nèi)容:
- #include
- #include
- intmain(intargc,char*argv[])
- {
- QApplicationapp(argc,argv);
- QLabel*label=newQLabel("helloqt");
- label->resize(200,100);
- label->show();
- returnapp.exec();
- }
然后在hello這個文件下依次:qmake-projct,qmakehello.pro,make,生成一個hello可執(zhí)行文件,運行以下,應(yīng)該可以看見一個簡單的對話框。
(5)如果要安裝qtEforx86的話,這里還要編譯qvfb.
(a).首先補充一些庫文件
- sudoapt-getinstalllibpng-devlibx11-devlibglui-devxorg-dev
(b).添加一些頭文件
將/host/mylinux/QT/qtsdk-2010.04/qt/tools/shared/deviceskin/下deviceskin.h,deviceskin.cpp都拷到/host/mylinux/QT/qtsdk-2010.04/qt/toolsqvfb文件夾下面.
(c).qmake-projectqmakeqvfb.pro
(d).修改Makefile文件,在LIBS選項后面添加-lXtst,注意哦:l是小寫,X是大寫。
(e)make
2.安裝x86+qvfb版
參數(shù)沒有配置成功,先空著
3.安裝arm版
無論是x86還是arm步驟說起來很簡單,三板斧(configure,make,makeinstall),但是麻煩在configure的參數(shù),極其變態(tài)。不僅僅多,復(fù)雜,而且往往別人編譯可以用的參數(shù)配置到你這里就偏偏不能用。當(dāng)然作為我們初學(xué)者,“盈科而進(jìn)”的學(xué)習(xí)是比較踏實的,一步一個坑,每個坑都吃透了。但我相信很少人能這么做。參數(shù)本書并不是什么很難的東西,偏偏是環(huán)境不一樣,參數(shù)配置還不一樣。我問過很多人,他們的參數(shù)都是自己試過成功的,偏偏我拿過來不能用。最叫人火大的是make這一步時間很長,我的機(jī)器比較好的,3G的內(nèi)存,別的什么都不開也要將近兩個小時。你等了一個多小時后他才會給出錯誤代碼,效率太低了。
我的步驟:
(1)解壓tarzxvfqt-everywhere-opensource-src-4.6.3.tar.gz,
(2)然后進(jìn)入cdqt-everywhere-opensource-src-4.6.3.
(3)configure
- ./configure-prefix/host/mylinux/QT/qt-embedded-4.6.3-arm-debug-and-release-qt3support-qt-zlib-qt-libtiff-qt-libpng-qt-libmng-qt-libjpeg-makelibs-nomakeexamples-nomakedemos-nomakedocs-no-cups-iconv-xplatformqws/linux-arm-g++-embeddedarm-little-endian-qt-freetype-depths8,16,24,32-qt-gfx-linuxfb-no-gfx-transformed-no-gfx-qvfb-no-gfx-vnc-no-gfx-multiscreen-no-dbus-qt-sql-sqlite-qt-kbd-qvfb-qt-kbd-tty-qt-mouse-pc-no-glib-plugin-mouse-tslib-I/source/rootfs/tslib-3.4.1/include-L/source/rootfs/tslib-3.4.1/lib-D__ARM_ARCH_5TEJ__
這里有幾點要注意:-D__ARM_ARCH_5TEJ__和-little-endian少了我是通不過,如果你沒加并且有幸出錯,百度或者google一下錯誤代碼,應(yīng)該能查的到。網(wǎng)上有大量的資料里這兩都沒加也通過,這正是叫人郁悶的地方。這個參數(shù)配置來自。qt-everywhere-opensource-src是4.6.0的。參數(shù)解釋也可以看他的。
這里還會有兩個選擇界面,一個選擇o,即是選擇開源協(xié)議,一個接受協(xié)議,填寫yes。
(4)make然后是漫長的等待,1~2個小時。
(5)最后sudomakeinstall.一定要sudo。
(6)設(shè)置環(huán)境變量
這里也可以設(shè)置腳本文件,方便不同版本的qmake.寫進(jìn)系統(tǒng)(和上面的不能同時共存):
- vim/etc/profile
在末尾添加:
QTDIR=/host/mylinux/QT/qt-embedded-4.6.3-arm-//這是設(shè)置QT的所在的路徑
exportPATH=$QTDIR/bin:$PATH//設(shè)置QT可執(zhí)行命令的目錄
exportLD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH//設(shè)置QT庫文件目錄
(7)將安裝好的qt-embedd-4.6.3-arm(全拷?????標(biāo)記一下)拷入arm板子的文件系統(tǒng)/source/rootfs/QT下,
(8)添加tslib環(huán)境腳本對QTE相關(guān)項
- vimqtsetenv.sh
- exportsetQTDIR=/QT/qt-embedd-4.6.3-arm
- exportsetQTEDIR=/QT/qt-embedded-4.6.3-arm
- exportPATH=$PATH:$QTDIR/bin
- exportQT_QWS_FONTDIR=$QPEDIR/lib/fonts
- exportQT_PLUGIN_PATH=$QTDIR/plugins/
暫時到這里,還有問題沒有解決,一個x86+qvfb的安裝,一個在板子上運行編好的可執(zhí)行文件總提示找不到庫,還有就是PC機(jī)上運行腳本不起作用,等有空再說。
總結(jié):
希望本文介紹的Ubuntu10.04下移植QtE的方法能夠?qū)ψx者有所幫助,更多有關(guān)linux系統(tǒng)的知識還有待于讀者去探索和學(xué)習(xí)。
【編輯推薦】

















