嵌入式Qt 4.7.1安裝移植過程詳解 環(huán)境: Ubuntu 12.04 VMware 9.0 qt軟件包:qt-everywhere-opensource-src-4.7.1.tar.gz (飛凌自帶) http://www./file/id_111560663117095120.htm 訪問密碼:H17dXX 交叉工具鏈4.3.2(參照飛凌技術手冊)Tslib庫的安裝(參照飛凌技術手冊) 說明:前面的準備工作和飛凌技術手冊當中的一樣,,因為飛凌沒有給Qt 4.7.1的嵌入式版本的移植教程,所以下面我將步驟附上:
一,、Qt4.7.1安裝
這三者PC版,、嵌入式X86版和ARM版的區(qū)別主要體現(xiàn)在:當configure時分別加了不同的參數(shù),具體區(qū)別是: 嵌入式X86平臺:帶有qvfb功能,,在PC機上可以模擬應用程序在arm開發(fā)板上的運行情況,。用此編譯好的程序,只用“./”命令不可以運行,,必須加上參數(shù) [ -qvfb ]–qws Ps:嵌入式X86平臺,,這個是PC下的一個qtopia,他自帶有個模擬器,,可以模擬出arm開發(fā)板的樣子出來,。方便調(diào)試; ARM平臺:編譯好的程序,,用于在arm平臺上運行,。 Ps:ARM平臺,這個主要是用來編譯,,因為要下載到開發(fā)板上,,需要arm版的qte的庫文件,編譯后直接下載到開發(fā)板運行; Ps:編譯x86是為了得到makeqpf,,編譯pc是為了得到qvfb
并拷貝出三份,,分別命名成qt-4.7.1-arm、qt-4.7.1-x86,、qt-4.7.1-pc具體步驟如下:
A. 安裝PC平臺的QT 1) 配置:進入cd qt-4.7.1-pc,,運行./configure -prefix /opt/Qt-4.7.1-pc 2) 編譯:make (時間比較長) 3) 安裝:make install (由于在配置時指定了安裝目錄,這樣將被安裝到目錄/opt/Qt-4.7.1-pc下)
1) 配置:進入cd qt-4.7.1-x86,,運行的命令,,./configure -prefix /usr/local/Trolltech/qt-4.7.1-x86-qvfb -opensource -confirm-license -embedded x86 -qt-gfx-qvfb -qt-kbd-qvfb -qt-mouse-qvfb -make tools -qt-mouse-qvfb 2) 編譯:make (時間比較長) 3) 安裝:make install (由于在配置時指定了安裝目錄,這樣將被安裝到目錄/opt/Qt-4.7.1-x86-qvfb下)
方法I:用飛凌自己編寫的腳本build-all,終端下面直接運行./build-all 方法II: 1)配置:進入cd qt-4.7.1-arm,,然后運行./configure -prefix /usr/local/Trolltech/qt-4.7.1-arm -opensource -confirm-license -release -shared -embedded arm -xplatform qws/linux-arm-g++ -no-qt3support -fast -no-largefile -qt-mouse-tslib -I /usr/local/tslib/include -L /uar/local/tslib/lib -make tools -make demos -make examples -make docs -qt-libjpeg -qt-libpng -qt-libtiff -qt-gif –multimedia 2) 編譯:make (時間比較長) 3) 安裝:make install (由于在配置時指定了安裝目錄,,這樣將被安裝到目錄/opt/Qt-4.7.1-arm下) 附錄III將附上我的各個腳本文件:直接在終端運行./**build-all即可
二、Qvfb的安裝:
1)進入目錄:cd qt-4.7.1-pc ,cd tools/qvfp 2)安裝:Make 3)將生成的qvfb可執(zhí)行文件拷貝到-x86-qvfb文件夾:cp qt-4.7.1-pc/bin/qvfp /opt/qt-4.7.1-x86-qvfb/bin
三,、測試qvfb
2)運行用x86版本的Qt 4.7.1編譯的可執(zhí)行程序test:./test –qws;(root權(quán)限) 3)切換我們的qvfb窗口中,,就可以看到test的運行界面了
四、MakeQpf制作嵌入式字體
1)進入x86-qvfb目錄:cd /opt/qt-4.7.1-x86-qvfb/bin/ 2)啟動qvfb: ./qvfb -width 800 -height 480 & 3)運行makeqpf:./makeqpf -qws
五,,嵌入式Qt 4.7.1程序的移植
1、用/opt/Qt-4.7.1-arm/bin/qmake工具編譯編寫的程序,,生成Makefile文件 2,、修改Makefile文件, CFLASS = -fno-rtti CXXFLAGS = -fno-rtti 3,、make生成可執(zhí)行文件 4、建立開發(fā)板環(huán)境變量文件env.sh,內(nèi)容如下: 由于我之前用的是Qtopia4.4.3版本,,所以里面會出現(xiàn)這個版本的信息,; #export PATH='/opt/Qtopia4.4.3/bin:/sbin:/usr/sbin:/bin:/usr/bin' 程序開機啟動可以不要 #export QPEDIR='/opt/Qtopia4.4.3'程序開機啟動可以不要 #export QTDIR='/opt/Qtopia4.4.3'程序開機啟動可以不要 export QT_QWS_FONTDIR='/opt/Qtopia4.4.3/lib/fonts/'字體目錄 export QWS_DISPLAY='LinuxFb:mmWidth76:mmHeight44:1' export QWS_MOUSE_PROTO='Tslib:/dev/input/event1' export TSLIB_CALIBFILE='/etc/pointercal' //校準的數(shù)據(jù)文件,由ts_calibrate校準程序生成 export TSLIB_CONFFILE='/usr/local/tslib/etc/ts.conf' //配置文件名 export TSLIB_CONSOLEDEVICE='none' //控制臺設備文件名 export TSLIB_FBDEVICE='/dev/fb0' //設備名 export TSLIB_PLUGINDIR='/usr/local/tslib/lib/ts' //插件目錄 export TSLIB_ROOT='/usr/local/tslib' export TSLIB_TSDEVICE='/dev/input/event1' //觸摸屏設備文件名 export TSLIB_TSEVENTTYPE='H3600' export QT_PLUGIN_PATH='/opt/qt-4.7.1/plugins:/opt/qt-4.7.1/qt_plugins/' //插件目錄 export LD_LIBRARY_PATH='/opt/qt-4.7.1/lib' //qt庫文件,,非常重要 5,、將可執(zhí)行文件和sh文件放入/目錄下面 6、source /env.sh 7,、./helloworld -qws & 注意:飛凌文件系統(tǒng)/etc/init.d/rcS中的最后一行的說明:1)/bin/qopia & 表示qtopia2.2.0 2)/bin/qtopia4 & 表示qtopia4.4.3 3)/bin/qt4 & 表示qt/e4.7 1,、我們在實際調(diào)試的時候,都是通過nfs掛載的形式,。當我們運行ts_calibrate的時候,,會在/etc目錄下生成一個pointercal文件。有時候會因為掛載目錄的權(quán)限不夠,,導致無法生成Pointercal文件,。這個時候我們可以用chmod 777 etc加個權(quán)限。 2,、有時候由于交叉編譯工具兩沒有指定正確,,會出現(xiàn)非法指令或者是“ line 1: syntax error: unexpected "("”錯誤??梢杂胒ile ts_calibrate是否是在當前平臺上運行的程序,,用readelf -a ts_calibrate查看當前的指令集. 3. export QWS_DISPLAY="LinuxFb:mmWidth100:mmHeight130:0",這句話我們在后面的Qt程序國際化的得到,,在移植的所有工作都完成以后,,我發(fā)現(xiàn)LCD屏山的字體非常小。后來經(jīng)過多發(fā)打聽,,才知道需要修改這句話,。我們把其中的數(shù)字值都改為其一半的時候,,屏山的字體就比較大了。具體原因有待研究,。 附錄I 編譯過程中的錯誤總結(jié):
1.在Ubuntu下面安裝插件工具:sudo apt-get install g++ 2.出錯信息是在./configure階段 Basic XLib functionality test failed! You might need to modify the include and library search paths by editing QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11 in /home/zhu/Qt/qt-x11-opensource-src-4.5.2/mkspecs/linux-g++ 其原因就在于需要安裝libX11的開發(fā)包,,在ubuntu/debian里包名都是libX11-dev 根據(jù)以往的經(jīng)驗,在./configure前主動裝好下面3個包,,基本上就萬事大吉了 sudo apt-get install libX11-dev libXext-dev libXtst-dev 3.如果出現(xiàn)basic xlib functionality test failed錯誤,,需要安裝libX11的安裝包,在終端輸入sudo apt-get install libX11-dev libXext-dev libXtst-dev 4.在終端輸入make,,如果出現(xiàn)cannot find lXrender錯誤,,需要安裝libxrender-dev,在終端輸入sudo apt-get install libxrender-dev 附錄II 安裝tslib的腳本:
export PATH=/usr/local/arm/4.4.1/bin/:$PATH export TOOLCHAIN=/usr/local/arm/4.4.1/ export TB_CC_PREFIX=arm-linux- export PKG_CONFIG_PREFIX=$TOOLCHAIN/arm-linux ./autogen.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 附錄III 安裝三個版本Qt4.7.1的腳本文件
http://www./file/id_111560663117095115.htm 訪問密碼:lM3Sl1http://www./file/id_111560663117095117.htm 訪問密碼:5oXIFi http://www./file/id_111560663117095116.htm 訪問密碼:MPC9nK Pc-build-all: #/bin/bash rm -fr qt-everywhere-opensource-src-4.7.1 rm -fr /opt/qt-4.7.1 tar xfvz qt-everywhere-opensource-src-4.7.1.tar.gz cd qt-everywhere-opensource-src-4.7.1 echo yes | ./configure -opensource -confirm-license -prefix /opt/Qt-4.7.1-pc make 2>&1 | tee ../qte4.7.1Makelog && make install x86-build-all: #/bin/bash export PATH=/usr/local/arm/4.3.2/bin:$PATH export PKG_CONFIG_PREFIX=$TOOLCHAIN/arm-none-linux-gnueabi export TB_CC_PREFIX=arm-linux- export TOOLCHAIN=/usr/local/arm/4.3.2 rm -fr qt-everywhere-opensource-src-4.7.1 rm -fr /opt/qt-4.7.1 tar xfvz qt-everywhere-opensource-src-4.7.1.tar.gz cd qt-everywhere-opensource-src-4.7.1 mkdir /opt/Qt-4.7.1-x86-qvfb echo yes | ./configure -prefix /opt/Qt-4.7.1-x86-qvfb -opensource -confirm-license -embedded x86 -qt-gfx-qvfb -qt-kbd-qvfb -qt-mouse-qvfb -make tools -qt-mouse-qvfb make 2>&1 | tee ../qte4.7.1Makelog && make install arm-build-all: #/bin/bash export PATH=/usr/local/arm/4.3.2/bin:$PATH export PKG_CONFIG_PREFIX=$TOOLCHAIN/arm-none-linux-gnueabi export TB_CC_PREFIX=arm-linux- export TOOLCHAIN=/usr/local/arm/4.3.2 rm -fr qt-everywhere-opensource-src-4.7.1 rm -fr /opt/qt-4.7.1 tar xfvz qt-everywhere-opensource-src-4.7.1.tar.gz cd qt-everywhere-opensource-src-4.7.1 mkdir /opt/Qt-4.7.1-arm echo yes | ./configure -opensource -embedded arm -xplatform qws/linux-arm-g++ -no-webkit -qt-libtiff -qt-libmng -qt-mouse-tslib -qt-mouse-pc -no-mouse-linuxtp -prefix /opt/Qt-4.7.1-arm -I /usr/local/tslib/include -L /usr/local/tslib/lib make 2>&1 | tee ../qte4.7.1Makelog && make install
完結(jié),。
|
|