解析QT 4.5 編譯
首先要有配置好的環(huán)境,本文使用的編譯環(huán)境如下:
主機系統(tǒng):Ubuntu 8.10
主機編譯器:gcc 版本 4.3.2
交叉編譯器:arm-softfloat-linux-gnu-gcc
軟件資源:
- qt-embedded-linux-opensource-src-4.5.1.tar.gz
- qt-x11-opensource-src-4.5.1.tar.gz
因為一般嵌入式設(shè)備上都是在framebuffer的方式,在X11上就是用qvfb 來模擬framebuffer的,我們平時開發(fā)也都是在PC上完成的,所以我們需要先安裝X11版的Qt來獲取qvfb這個工具。嵌入式的開發(fā)有了 qvfb,就可以不需要實際的開發(fā)板,也可以開發(fā)Qt應(yīng)程序。
一、下載
- qt-embedded-linux-opensource-src-4.5.1.tar.gz
- qt-x11-opensource-src-4.5.1.tar.gz
二、編譯安裝qt-embedded
- # tar -zxvf qt-embedded-linux-opensource-src-4.5.1.tar.gz
- # cd qt-embedded-linux-opensource-src-4.5.1
- # ./configure -embedded x86 -qvfb
- # make
- # make install
qt-embedded 被安裝在這個目錄下/usr/local/Trolltech/QtEmbedded-4.5.1
設(shè)置環(huán)境變量:
- # vi ~/.bashrc
把下面的加上去
- export QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.1
- export PATH=/usr/local/Trolltech/QtEmbedded-4.5.1/bin:$PATH
- export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.1/lib:$LD_LIBRARY_PATH
至此,qt-embedded安裝完畢
三、編譯安裝qt-x11
- # tar -zxvf qt-x11-opensource-src-4.5.1.tar.gz
- # cd qt-x11-opensource-src-4.5.1
- # ./configure
- # make
- # make install
qt-x11 被安裝到此目錄下/usr/local/Trolltech/Qt-4.5.1
編譯qvfb:
- # cd qt-x11-opensource-src-4.5.1/tools/qvfb
- # make
- /*****Added by PengCarl (12 December 2009)*****/
出現(xiàn)錯誤:/usr/bin/ld: cannot find -lXtst
解決:ubuntu沒裝有l(wèi)ibxtst-dev,解決如下
- # aptitude install libxtst-dev
把生成的qvfb復制到qt-embedded的bin下,如
- # cp qt-x11-opensource-src-4.5.1/bin/qvfb /usr/local/Trolltech/QtEmbedded-4.5.1/bin
至此,qt-x11安裝完畢完畢
四、測試
- # cd /usr/local/Trolltech/QtEmbedded-4.5.1/demos/
- # qvfb &
- # ./chip -qws
隨即我們就可以看到qt自帶的例程圖像了。
五、編譯qt自帶的例程
- # cd /usr/local/Trolltech/QtEmbedded-4.5.1/demos/
- # qmake chip.pro (生成Makefile文件)
- # make
5、編譯安裝tslib1.4
1.首先下載tslib-1.4.tar.gz,下載地址:http://blog.chinaunix.net/u2/75270/showart_1793535.html里面自己找
2.解壓文件后
記得現(xiàn)安裝三個東西
- #sudo apt-get install autoconf
- #sudo apt-get install automake
- #sudo apt-get install libtool
確認已經(jīng)安裝并設(shè)置好arm-linux-gcc
然后進行編譯
- #cd tslib/
- #export CC=/usr/local/arm/3.4.1/bin/arm-linux-gcc
- #export CXX=/usr/local/arm/3.4.1/bin/arm-linux-g++
運行
- #./autogen.sh
- #echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache
#p#
配置安裝參數(shù)
- #./configure --host=arm-linux --cache-file=arm-linux.cache --enable-inputapi=no
- PLUGIN_DIR=/usr/local/arm/tslib/plugins -prefix=/usr/local/arm/tslib/build
- -host=arm-linux --cache-file=arm-linux.cache 2>&1 | tee conf_log
編譯
- #make 2>&1 | tee make_log
- #make install
編譯后會出現(xiàn)bulid文件夾
- #cd build/etc
- #gedit ts.conf
去掉module_raw input前面的#號和空格移植到開發(fā)板
把build 文件夾拷貝到開發(fā)板相應(yīng)的地方。我的就是拷貝到/home/tslib下
環(huán)境變量
- #!/bin/sh
- export set T_ROOT=/home/tslib/build
- export set LD_LIBRARY_PATH=$T_ROOT/lib
- export set TSLIB_CONSOLEDEVICE=none
- export set TSLIB_FBDEVICE=/dev/fb0
- #export set TSLIB_TSDEVICE=/dev/event0
- export TSLIB_TSDEVICE=/dev/h3600_tsraw
- export set TSLIB_PLUGINDIR=$T_ROOT/lib/ts
- export set TSLIB_CONFFILE=$T_ROOT/etc/ts.conf
- export set TSLIB_CALIBFILE=/home/tslib/build/etc/pointercal
- cd /home/tslib/build/bin
- ./ts_calibrate
在終端用env查看環(huán)境變量如下:
- [root@utu-Linux]\$ env
- TSLIB_TSDEVICE=/dev/event0
- USER=root
- LD_LIBRARY_PATH=/home/tslib/build/lib
- OLDPWD=/home/tslib/build
- HOME=/
- TSLIB_FBDEVICE=/dev/fb0
- PS1=[root@utu-Linux]\$
- TSLIB_PLUGINDIR=/home/tslib/build/lib/ts
- T_ROOT=/home/tslib/build
- TSLIB_CONSOLEDEVICE=none
- LOGNAME=root
- TERM=vt102
- PATH=/sbin:/usr/sbin:/bin:/usr/bin
- TSLIB_CONFFILE=/home/tslib/build/etc/ts.conf
- SHELL=/bin/sh
- PWD=/home/tslib/build/bin
- TSLIB_CALIBFILE=/home/tslib/build/etc/pointercal
- [root@utu-Linux]\$
進入 /home/tslib/build/bin目錄下, ./ts_calibrate 就行了!
6、編譯安裝QtEmbedded-4.5.2-arm版本
A、解壓
- root@hrixin-desktop:/work/qte# tar xjvf qt-embedded-linux-opensource-src-4.5.2.tar.bz2
- root@hrixin-desktop:/work/qte# mv qt-embedded-linux-opensource-src-4.5.2 qt-embedded-linux-opensource-src-4.5.2-arm
- root@hrixin-desktop:/work/qte# cd qt-embedded-linux-opensource-src-4.5.2-arm
B、配置編譯:
- ./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.2-arm -embedded arm \
- -release -shared -fast -no-largefile -qt-sql-sqlite -no-qt3support -no-xmlpatterns -no-mmx -no-3dnow -no-sse -no-sse2 -no-svg -no-webkit -qt-zlib -qt-gif \
- -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg -make libs -nomake tools -nomake examples -nomake docs -nomake demo -no-nis -no-cups -no-iconv -no-dbus \
- -no-openssl -xplatform qws/linux-arm-g++ -little-endian -qt-freetype -depths 16,18 -qt-gfx-linuxfb -no-gfx-transformed -no-gfx-multiscreen \
- -no-gfx-vnc -no-gfx-qvfb -qt-kbd-usb -no-glib -qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib
注意這個目錄要跟你的tslib安裝目錄相同?。?!
- To reconfigure, run 'make confclean' and 'configure'.
- root@hrixin-desktop:/work/qte/qt-embedded-linux-opensource-src-4.5.2-arm# make
C、安裝到/usr/local/Trolltech/QtEmbedded-4.5.2-arm目錄下:
- root@hrixin-desktop:/work/qte/qt-embedded-linux-opensource-src-4.5.2-arm# make install
- ...
- To reconfigure, run 'make confclean' and 'configure'.
#p#
移植Qt Embedded-4.5.2 tslib1.4 到 S3C2440
開發(fā)環(huán)境
操作系統(tǒng): Vmware6.0 + Ubuntu 8.04。
交叉編譯器:arm-linux-gcc-4.3.2
目標板: mini2440 + NEC3.5寸屏
1、下載源碼包:
在:http://www.cnblogs.com/kenter/admin/ftp://ftp.qtsoftware.com/qt/source/ 下載
- qt-embedded-linux-opensource-src-4.5.2.tar.bz2
- qt-x11-opensource-src-4.5.2.tar.bz2
在http://blog.chinaunix.net/u2/86708/showart_1924834.html上 下載tslib1.4.tar.gz
2、配置ubuntu 8.04編譯環(huán)境
安裝g++: sudo apt-get g++
安裝編譯X11用到的庫:sudo apt-get libx11-dev libxext-dev
安裝libxtst-dev: sudo aptitude install libxtst-dev 否則編譯qvfb出錯。
3、編譯及安裝qt-x11-opensource-src-4.5.2
qt-x11版本可以產(chǎn)生Qt開發(fā)工具,如designer、qvfb,嵌入式的開發(fā)有了qvfb,就可以不需要實際的開發(fā)板,也可以開發(fā)Qt應(yīng)程序。
- tar xjvf qt-x11-opensource-src-4.5.2.tar.bz2
- cd qt-x11-opensource-src-4.5.2
- ./configure
- make
- make install
歷經(jīng)漫長的編譯過程,默認安裝在/usr/local/Trolltech/Qt-4.5.2下,編譯完成后源程序不要刪除,還有用。
4、編譯配置QtEmbedded-4.5.2-x86版本
A、解壓
- root@hrixin-desktop:/work/qte# tar xjvf qt-embedded-linux-opensource-src-4.5.2.tar.bz2
- root@hrixin-desktop:/work/qte# mv qt-embedded-linux-opensource-src-4.5.2 qt-embedded-linux-opensource-src-4.5.2-x86
- root@hrixin-desktop:/work/qte# cd qt-embedded-linux-opensource-src-4.5.2-x86
B、配置編譯:
- ./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.2-x86 -embedded x86 -qvfb
- root@hrixin-desktop:/work/qte/qt-embedded-linux-opensource-src-4.5.2-x86# make
C、安裝到/usr/local/Trolltech/QtEmbedded-4.5.2-x86目錄下:
- root@hrixin-desktop:/work/qte/qt-embedded-linux-opensource-src-4.5.2-x86# make install
D、建立腳本文件:setenv_arm.sh,輸入以下內(nèi)容:
- export QTEDIR="/usr/local/Trolltech/QtEmbedded-4".5.2-x86/
- export PATH="/usr/local/Trolltech/QtEmbedded-4".5.2-x86/bin/:$PATH
- export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.2-x86/lib/:$LD_LIBRARY_PATH
E、編譯x86版QT應(yīng)用程序前,先執(zhí)行此腳本文件:
- root@hrixin-desktop:/usr/local/Trolltech/QtEmbedded-4.5.2-x86# source setenv-x86.sh
5、編譯安裝tslib1.4
A、安裝編譯過程需用到的程序
- root@hrixin-desktop:/home/hrixin# apt-get install autoconf(或autoconf2.13)
- root@hrixin-desktop:/home/hrixin# apt-get install automake
- root@hrixin-desktop:/home/hrixin# apt-get install libtool
B、配置編譯
- root@hrixin-desktop:/work/qt# tar xzvf tslib-1.4.tar.gz
- root@hrixin-desktop:/work/qt# cd tslib生成./configure
- root@hrixin-desktop:/work/qt/tslib# source autogen.sh
- root@hrixin-desktop:/work/qt/tslib# ./configure --prefix=/usr/local/tslib/ --host=arm-linux ac_cv_func_malloc_0_nonnull=yes
- root@hrixin-desktop:/work/qt/tslib# make
C、安裝
- root@hrixin-desktop:/work/qt/tslib# make install-strip //生成瘦身應(yīng)用程序和庫
打包
- root@hrixin-desktop:/usr/local# tar czvf tslib.tar.gz tslib
D、復制到NFS文件系統(tǒng)/usr/local目錄下解壓
- root@hrixin-desktop:/work/root_qtopia/usr/local# tar xzvf tslib.tar.gz
E、設(shè)置環(huán)境變量,校準觸摸屏。在天開板終端建立腳本文件,并執(zhí)行:
- export TSLIB_ROOT=/usr/local/tslib
- export TSLIB_TSDEVICE=/dev/input/event0
- export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
- export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
- export TSLIB_CALIBFILE=/etc/pointercal
- export TSLIB_FBDEVICE=/dev/fb0
- export QWS_MOUSE_PROTO=Tslib:/dev/input/event0
注意:觸摸屏的前提是你的觸摸屏驅(qū)動已經(jīng)寫好,并加載進了內(nèi)核.
你可以測試有沒有加載觸摸屏驅(qū)動,cat /dev/input/event0(這只是我的板子上的觸摸屏) ,
點擊觸摸屏,看終端有無顯示,若有則表明正確。
在開發(fā)板/usr/local/tslib/bin目錄下執(zhí)行校準觸摸屏程序:
- [root@FriendlyARM bin]# ./ts_calibrate
可以運行此目錄下的其他程序進行測試。
至此,觸摸屏程序能順利運行,接下來移植QtEmbedded-4.5.2,設(shè)置好環(huán)境變量。
6、編譯安裝QtEmbedded-4.5.2-arm版本
A、解壓
- root@hrixin-desktop:/work/qte# tar xjvf qt-embedded-linux-opensource-src-4.5.2.tar.bz2
- root@hrixin-desktop:/work/qte# mv qt-embedded-linux-opensource-src-4.5.2 qt-embedded-linux-opensource-src-4.5.2-arm
- root@hrixin-desktop:/work/qte# cd qt-embedded-linux-opensource-src-4.5.2-arm
B、配置編譯:
- ./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.2-arm -embedded arm \
- -release -shared -fast -no-largefile -qt-sql-sqlite -no-qt3support -no-xmlpatterns -no-mmx -no-3dnow -no-sse -no-sse2 -no-svg -no-webkit -qt-zlib -qt-gif \
- -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg -make libs -nomake tools -nomake examples -nomake docs -nomake demo -no-nis -no-cups -no-iconv -no-dbus \
- -no-openssl -xplatform qws/linux-arm-g++ -little-endian -qt-freetype -depths 16,18 -qt-gfx-linuxfb -no-gfx-transformed -no-gfx-multiscreen \
- -no-gfx-vnc -no-gfx-qvfb -qt-kbd-usb -no-glib -qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib
注意這個目錄要跟你的tslib安裝目錄相同?。?!
- root@hrixin-desktop:/work/qte/qt-embedded-linux-opensource-src-4.5.2-arm# make
C、安裝到/usr/local/Trolltech/QtEmbedded-4.5.2-arm目錄下:
- root@hrixin-desktop:/work/qte/qt-embedded-linux-opensource-src-4.5.2-arm# make install
D、打包編譯安裝好的QtEmbedded庫文件:
- root@hrixin-desktop:/usr/local/Trolltech# tar czvf QtEmbedded-4.5.2-arm.tar.gz QtEmbedded-4.5.2-arm
E、建立腳本文件:setenv_arm.sh,輸入以下內(nèi)容:
- export QTEDIR="/usr/local/Trolltech/QtEmbedded-4".5.2-arm/
- export PATH="/usr/local/Trolltech/QtEmbedded-4".5.2-arm/bin/:$PATH
- export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.2-arm/lib/:$LD_LIBRARY_PATH
F、編譯ARM版QT應(yīng)用程序前,先執(zhí)行此腳本文件:
- root@hrixin-desktop:/usr/local/Trolltech/QtEmbedded-4.5.2-arm# source setenv-arm.sh
#p#
編譯calculator
- root@hrixin-desktop:/work/qt/qt-embedded-linux-opensource-src-4.5.2-arm/examples/widgets/calculator# qmake calculator.pro
- root@hrixin-desktop:/work/qt/qt-embedded-linux-opensource-src-4.5.2-arm/examples/widgets/calculator# make
7、在主機上建立NFS啟動根文件系統(tǒng),把編譯好的庫文件復制到相關(guān)目錄下。
A、文件系統(tǒng)目錄為:/work/root_qtopia/,修改rcS
- [root@FriendlyARM /]# vi /etc/init.d/rcS
- #/bin/qtopia &
建立Trolltech目錄:
- root@hrixin-desktop:/work/root_qtopia/usr/local# mdkir Trolltech
B、把打包好的庫文件:QtEmbedded-4.5.2-arm.tar.gz復制到/work/root_qtopia/usr/local/Trolltech目錄下
- root@hrixin-desktop:/work/root_qtopia/usr/local/Trolltech# tar xzvf QtEmbedded-4.5.2-arm.tar.gz
- root@hrixin-desktop:/work/root_qtopia/usr/local/Trolltech# cd QtEmbedded-4.5.2-arm/
C、復制5-F中編譯好的calculator可執(zhí)行文件到此目錄下:
- root@hrixin-desktop:/work/root_qtopia/usr/local/Trolltech/QtEmbedded-4.5.2-arm
- # cp /work/qt/qt-embedded-linux-opensource-src-4.5.2-arm/examples/widgets/calculator/calculator ./
D、建立腳本文件
- root@hrixin-desktop:/work/root_qtopia/usr/local/Trolltech/QtEmbedded-4.5.2-arm# gedit setenv.sh
輸入以下內(nèi)容:(把設(shè)置tslib環(huán)境變量的腳本文件內(nèi)容,也添加進來)
- #!/bin/sh
- export TSLIB_ROOT=/usr/local/tslib
- export TSLIB_TSDEVICE=/dev/input/event0
- export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
- export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
- export TSLIB_CALIBFILE=/etc/pointercal
- export TSLIB_FBDEVICE=/dev/fb0
- export QWS_MOUSE_PROTO=Tslib:/dev/input/event0
- export QTDIR="/usr/local/Trolltech/QtEmbedded-4".5.2-arm
- export QPEDIR="/usr/local/Trolltech/QtEmbedded-4".5.2-arm
- export LD_LIBRARY_PATH=$QTDIR/lib:$TSLIB_ROOT/lib:/usr/local/lib:$LD_LIBRARY_PATH
E、至此,主機上的文件系統(tǒng)已經(jīng)配置好,開板通過NFS掛載到此文件系統(tǒng)啟動。
啟動后,開發(fā)板串口終端執(zhí)行剛才的腳本文件(通過NFS啟動,執(zhí)行腳本文件未成功),設(shè)置好環(huán)境變量。
檢查環(huán)境變量是否成功:
- [root@FriendlyARM QtEmbedded-4.5.2-arm]# echo $QTDIR
- /usr/local/Trolltech/QtEmbedded-4.5.2-arm
成功!
如果沒有輸出,則失敗。同樣的方法檢查其他兩個環(huán)境變量。
F、運行calculator
- [root@FriendlyARM QtEmbedded-4.5.2-arm]# ./calculator -qws
Qtopia移植
Qtopia 是Trolltech 公司為采用嵌入式Linux操作系統(tǒng)的消費電子設(shè)備而開發(fā)的綜合應(yīng)用平臺, Qtopia包含完整的應(yīng)用層、靈活的用戶界面、窗口操作系統(tǒng)、應(yīng)用程序啟動程序以及開發(fā)框架。下面便是他的移植過程。
硬件s3c2410
主機環(huán)境:red hot企業(yè)版 5.0
交叉編譯工具:gcc-3.4.5-glibc-2.3.6
主機編譯工具:gcc-4.1
Qtopia源碼:qtopia-opensource-src-4.2.0.tar.gz
tslib源碼:tslib-1.4.tar.gz
#p#
一、tslib移植
第一步:解壓tslib-1.4.tar.gz
- tar -zxvf tslib-1.4.tar.gz
第二步:進入解壓過的目錄
- cd tslib-1.4
第三步:執(zhí)行tslib-1.4目錄下的autogen.sh
- ./autogen.sh
這一步需要安裝一些工具:sudo apt-get install automake
第四步:執(zhí)行autogen.sh腳本所生成的Makefile文件
請打入以下命令:
- echo "ac_cv_func_malloc_0_nonnull=yes" >$ARCH-linux.cache
- ./configure --host=arm-softfloat-linux-gnu --prefix=/home/linux/tslib --cache-file=$ARCH-linux.cache
--host是指你的交叉編譯器的前最;例如:你的交叉編譯器是arm-linux-gcc,則--host=arm-linux.如果是arm-softfloat-linux-gnu-gcc
則--host=arm-softfloat-linux-gnu
--prefix 是你執(zhí)行make install 的時候編譯后生成的可執(zhí)行文件和庫文件以及配置文所安裝的目錄;
configure文件下還有好多選項;你可以執(zhí)行./configure --help 來進行選擇其他項,不過在這里這些選項就夠了。
第五步:執(zhí)行make
第六步:執(zhí)行make installls
第七步:把指定安裝目錄下的tslib的文件都copy到你所掛載的根文件下
- sudo cp -rf /home/linux/tslib/* /rootfs/tslib
第八步:修改/rootfs/tslib下的etc目錄中ts.cong文件
vi ts.conf 將第二行的#module_raw input修改成module_raw input 注意一定要頂格寫否則程序執(zhí)行時會發(fā)生讀取ts.conf錯誤
二、Qtopia移植
第一步:解壓qtopia-opensource-src-4.2.0.tar.gz
- tar zxvf qtopia-opensource-src-4.2.0.tar.gz
- mv qtopia-opensource-4.2.0 source
第二步:創(chuàng)建在source同級目錄下創(chuàng)建目錄target
- mkdir target
第三步:修改源碼包
1、復制
- # cd source
- # cd src/libraries/qtopiabase/
- # cp custom-linux-cassiopeia-g++.h custom-linux-arm-g++.h
- # cp custom-linux-cassiopeia-g++.cpp custom-linux-arm-g++.cpp
2、修改時區(qū)信息
- # vi src/libraries/qtopia/qtimezone.cpp
將114行的 /usr/share/zoneinfo/ 改為/Qtipia/zoneinfo/ ,保存退出。
- # vi src/settings/systemtime/settime.cpp
將318行的 /usr/share/zoneinfo/ 改為/Qtipia/zoneinfo/ ,保存退出。
3、裁減Qtopia core的庫(下列操作后在屏幕上會出現(xiàn)一個光標,否則沒有光標根據(jù)需求配置)
- # vi qtopiacore/qconfig-qpe.h
首先注釋掉關(guān)于鼠標光標的宏定義,讓程序運行時,觸摸屏中央有光標出現(xiàn):
- // Qtopia Core
- /*
- #ifndef QT_NO_QWS_CURSOR
- # define QT_NO_QWS_CURSOR
- #endif
- */
- /*
- #ifndef QT_NO_QWS_MOUSE
- # define QT_NO_QWS_MOUSE
- #endif
- #ifndef QT_NO_QWS_MOUSE_AUTO
- # define QT_NO_QWS_MOUSE_AUTO
- #endif
- */
其它宏定義根據(jù)需要進行注釋。
(1) 保存后將qconfig-qpe.h拷貝到global目錄。
- # cp qtopiacore/qconfig-qpe.h qtopiacore/qt/src/corelib/global/qconfig-qpe.h
(必須進行的操作)
(2)注釋掉其他文件里的QT_NO_QWS_CURSOR的定義
- # vi qtopiacore/qt/src/corelib/global/qfeatures.h
注釋掉如下內(nèi)容:
- /*
- #if !defined(QT_NO_QWS_CURSOR) && (defined(QT_NO_CURSOR))
- #define QT_NO_QWS_CURSOR
- #endif
- */
(3)保存退出。
- # vi qtopiacore/qt/src/corelib/global/qglobal.h
注釋掉以下內(nèi)容:
- //# define QT_NO_QWS_CURSOR
4、下面是對編譯過程中出現(xiàn)的錯誤進行的一些修改:
(1)vim qtopiacore/qt/tools/qvfb/qvfbshmem.cpp
注釋掉asm/page.h
- //#include <asm/page.h>
(2)vim qtopiacore/qt/tools/qvfb/qvfbmmap.cpp
注釋掉asm/page.h
- //#include <asm/page.h>
并修改如下內(nèi)容
- unsigned char *data;
- uint data_offset_value = sizeof(QVFbHeader);
- if (data_offset_value % PAGE_SIZE)
- data_offset_value += PAGE_SIZE - (data_offset_value % PAGE_SIZE);
為:
- unsigned char *data;
- uint data_offset_value = sizeof(QVFbHeader);
- const int page_size = getpagesize();
- if (data_offset_value % page_size)
- data_offset_value += page_size - (data_offset_value % page_size);
(3)vim src/libraries/qtopiabase/qmemoryfile_unix.cpp +128
修改
- f = ::open(tmpFile.toLatin1(), O_CREAT | O_WRONLY);
為:
- f = ::open(tmpFile.toLatin1(), O_CREAT | O_WRONLY ,0777);
4、修改交叉工具
- vim qtopiacore/qt/mkspecs/qws/linux-arm-g++/qmake.conf
將文件中的arm-linux-***全部修改為arm-softfloat-linux-gnu-**
這樣做的前提是我的交叉工具鏈是arm-softfloat-linux-gnu,如果你的是arm-linux就不用改了。
#p#
第四步:生成Makefile
cd ../target
- ../source/configure -release -image /Qtopia -prefix /Qtopia -xplatform
- linux-arm-g++ -arch arm -no-qvfb -displaysize 320x240 -no-modem -extra-qtopiacore-config "
- -release -xplatform qws/linux-arm-g++ -embedded arm -qconfig qpe -depths 4,8,16,32
- -qt-sql-sqlite -no-mouse-linuxtp -qt-mouse-tslib -I/home/linux/tslib/include
- -L/home/linux/tslib/lib " 2>../configureERR.tx
注意:這里/Qtopia是最后Qtopia的安裝路徑,安裝到主機的某個路徑下,最終這個路徑和目標板上的路徑必須一致。
主要配置選項解說如下:
- -xplatform linux-arm-g++ -arch arm
目標平臺為arm-linux,體系結(jié)構(gòu)為arm。
- -no-qvfb
目標平臺已支持framebuffer,因而不使用虛擬幀緩沖。
- -extra-qtopiacore-config
為Qtopia core 配置選項。
- -xplatform qws/linux-arm-g++ -embedded arm
目標平臺編譯配置文件使用qtopiacore/qt/mkspecs/qws/linux-arm-g++目錄下的配置文件,嵌入式平臺為arm。
- -qconfig qpe
使用配置文件qconfig-qpe.h,若使用qconfig-large.h配置文件,則使用-qconfig large選項。
- -qt-sql-sqlite
數(shù)據(jù)庫支持Sqlite。
- -qt-kbd-usb
鍵盤支持usb協(xié)議。
- -no-mouse-linuxtp -qt-mouse-tslib
- -I/home/linux/tslib/include -L/home/linux/tslib/lib
觸摸屏協(xié)議不支持linuxtp,支持tslib,并在后面添加上剛才編譯的tslib的頭文件和庫。
2>../qtopiaconfigureERR.txt
最后將配置過程中的錯誤輸出到qtopiaconfigureERR.txt文件中。
第五步:make
第六步:make install
第七步:cp source/etc/zoneinfo /Qtopia/ -a
第八步:將安裝和的目錄考到nfsroot目錄下
cp /Qtopia /rootfs -a
第九步:配置目標板環(huán)境變量腳本
vim qtopia.sh
添加如下內(nèi)容:
#!/bin/sj
- export TSLIB_ROOT=/tslib
- export TSLIB_TSDEVICE=/dev/event0
- export LD_LIBRARY_PATH=/tslib/lib:$LD_LIBRARY_PATH
- export QWS_SIZE=320x240
- export TSLIB_FBDEVICE=/dev/fb0
- export TSLIB_PLUGINDIR=/tslib/lib/ts
- export TSLIB_CONSOLEDEVICE=none
- export TSLIB_CONFFILE=/tslib/etc/ts.conf
- export POINTERCAL_FILE=/etc/pointercal
- export QWS_MOUSE_PROTO=Tslib:/dev/event0
- export TSLIB_CALIBFILE=/etc/pointercal
- export TSLIB_TSEVENTTYYPE=H3600i
- export LD_LIBRARY_PATH=/Qtopia/lib:$LD_LIBRARY_PATH
- export QWS_SW_CURSOR
- export set HOME=/root
- export set QPEDIR=/Qtopia
- export set QWS_KEYBOARD="TTY:/dev/tty1""
- export QWS_DISPLAY="LinuxFb:mmWidth35:mmHeight45:0"
三、啟動Qtopia
第一步:目標板開機
第二步:運行腳本qtopia.sh
./qtopia.sh
第三步:運行qpe
/Qtopia/bin/qpe
這個時候就能看到一個漂亮的界面了。
網(wǎng)關(guān)配置
ifconfig eth0 192.168.0.165 netmask 255.255.255.0
【編輯推薦】