![QtEmbedded在嵌入式linux下的開發(fā)環(huán)境建立與移植Qt_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/10/2cf44323-e554-4d4b-999d-c20bd25f7820/2cf44323-e554-4d4b-999d-c20bd25f78201.gif)
![QtEmbedded在嵌入式linux下的開發(fā)環(huán)境建立與移植Qt_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/10/2cf44323-e554-4d4b-999d-c20bd25f7820/2cf44323-e554-4d4b-999d-c20bd25f78202.gif)
![QtEmbedded在嵌入式linux下的開發(fā)環(huán)境建立與移植Qt_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/10/2cf44323-e554-4d4b-999d-c20bd25f7820/2cf44323-e554-4d4b-999d-c20bd25f78203.gif)
![QtEmbedded在嵌入式linux下的開發(fā)環(huán)境建立與移植Qt_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/10/2cf44323-e554-4d4b-999d-c20bd25f7820/2cf44323-e554-4d4b-999d-c20bd25f78204.gif)
![QtEmbedded在嵌入式linux下的開發(fā)環(huán)境建立與移植Qt_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/10/2cf44323-e554-4d4b-999d-c20bd25f7820/2cf44323-e554-4d4b-999d-c20bd25f78205.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、. . . . Qt/Embedded在嵌入式linux下的開發(fā)環(huán)境建立與移植摘要:本文主要介紹了在嵌入式linux系統(tǒng)下QT/Embedded開發(fā)環(huán)境建立與移植。通過大量源代碼與分析,建立起在linux主機和s3c2410下的Qt/開發(fā)環(huán)境,再對QT/E程序進行移植。關(guān)鍵詞:Qt/Embedded;嵌入式;linux 引言Qt/Embedded是奇趣科技推出的基于Linux的嵌入式平臺開發(fā)工具,是Qt的嵌入式版本。它繼承了Qt的全部標準API,提供了比Xlib和XWindows系統(tǒng)更加緊湊的窗口生成系統(tǒng),對FrameBuffer直接進行操作(見圖1)。完全模塊化的設(shè)計和高效的編譯系統(tǒng)減少了存
2、的消耗,這些使Qt/Embedded成為嵌入式環(huán)境中,功能強大而全面的GUI開發(fā)工具。由于KDE等項目均使用Qt作為支持庫,所以許多基于Qt的X Windows程序可以非常方便地移植到Qt/Embedded版本上。Qt/Embedded具有面向?qū)ο?、跨平臺和界面設(shè)計方便美觀等優(yōu)點,已得到了廣泛的應(yīng)用。本文主要通過大量的源代碼,建立起linux主機和s3c2410下的QT/Embedded開發(fā)環(huán)境,并指出其移植方法。1前期準備本文所用到的宿主機操作系統(tǒng)為RED HAT 9.0,目標平臺為三星公司的S3c2410。需要準備的軟件包如下:1)jpegsrc.v6b.tar.gz 安裝libjpeg庫
3、,因為配置Qt/E支持jpeg時需要jpeglib.h、 libjpeg.a、libjpeg.so這三個文件;2)e2fsprogs.1.35.tar.gz -安裝libuuid庫,因為交叉編譯時需要用到此庫;3)qt-embedded-free-3.3.5.tar.gz -編寫嵌入式圖形界面所需的軟件包;4)qt-x11-3.3.4.tar.gz -編寫嵌入式圖形界面所需的軟件包。2Qt/E開發(fā)環(huán)境的建立21 Jpeg6b的安裝與配置Jpeg6b的安裝和配置比較簡單,過程如下:#cd /usr/src#tar xzvf jpegsrc.v6b.tar.gz /解壓#cd jpeg-6b#./
4、configure enable-shared enable-static/配置,既生成靜態(tài)又生成共享庫文件#make#cd /usr/local#mkdir man /注意建立man和man1文件夾#cd man #mkdir man1#cd /usr/src/jpeg-6b#make install /編譯并安裝完成后會在/usr/include目錄下生成jpeglib.h,在/usr/local/lib目錄下會生成libjpeg.a和libjpeg.so兩個庫文件,如果沒有則說明安裝不成功。22安裝并交叉編譯arm的libuuid庫#cd /usr/src#tar xvzf e2fspr
5、ogs-1.35.tar.gz /解壓#cd e2fsprogs-1.35#./configure -host=arm-linux -with-cc=arm-linux-gcc -with-linker=arm-linux-ld -enable-elf-shlibs -prefix=/usr/local/arm/2.95.3/arm-linux/配置生成基于ARM平臺的libuuid庫文件#make install /編譯并安裝#cd lib#cp dR libuuid.* /usr/local/arm/2.95.3/arm-linux/lib/將生成的庫文件拷到ARM交叉編譯工具鏈所在的li
6、b目錄。將交叉編譯后生成的libuuid庫拷到arm的交叉編譯工具鏈目錄中時應(yīng)注意檢查生成的libuuid.so、libuuid.so.1、libuuid.so.1.2是不是arm交叉編譯完成的(file libuudi.so.1.2 如果顯示為:ELF 32-bit LSB Sshared,ARM,Version1(ARM),not stripped則表示正確)。23安裝Qt/X11#cd /usr/local#tar xvfz qt-x11-free-3.3.4.tar.gz#mv qt-x11-free-3.3.4 qtx#cd qtx#export QTDIR=$PWD /設(shè)置環(huán)境變量
7、,在編譯的時候要用到#export PATH=$QTDIR/bin:$PATH#export LD_LIBRARY_PATH =$QTDIR/lib#./configure -depths 4,8,16 -no-ipv6 -no-cups -no-pch qvfb -depths 4,8,16,32 /配置,可以通過./configure -help來獲得幫助信息#make /編譯#make install24 安裝Qt/Embedded編譯并安裝Qt/Embedded主要是為了生成基于ARM核的Qt/E庫文件,將這些庫文件移植到ARM平臺中就可以運行通過QT開發(fā)出來的GUI程序了,下面列出其
8、安裝步驟:#cd /usr/local#tar xvzf qt-embedded-free-3.3.5.tar.gz#mv qt-embedded-free-3.3.5qte#cd qte#export QTDIR=$PWD /設(shè)置環(huán)境變量#export PATH=$QTDIR/bin:$PATH#export LD_LIBRARY_PATH =$QTDIR/lib:$LD_LIBRARY_PATH接著拷貝jpeg庫頭文件到Qt/E的include中,因為在編譯的時候要用到:#cp /usr/include/jpeglib.h $QTDIR/include/#cp /usr/include/j
9、config.h $QTDIR/include/#cp /usr/include/jerror.h $QTDIR/include/#cp /usr/include/jmorecfg.h $QTDIR/include/#cp /usr/local/qtx/bin/uic $QTDIR/bin/#./configure -shared -embedded arm -qt-gif -no-exceptions -thread -no-nis -no-cups -no-stl -qt-imgfmt-mng -qt-imgfmt-png -qt-imgfmt-jpeg -qt-sql-sqlite -q
10、vfb -depths 4,8,16,32#make /編譯,最終生成基于ARM平臺的Qt/E庫文件:libqte-mt.so、libqte-mt.so.3、libqte-mt.so.3.3、libqte-mt.so.3.3.5到此,整個Qt/Embedded的開發(fā)環(huán)境全部建立起來了。3.Qt/Embedded在硬件平臺上的移植Qt/E移植主要是將交叉編譯Qt/E時生成的庫文件移植到目標板的文件系統(tǒng)中:#cd /home/root /root為我們存放文件系統(tǒng)的目錄#mkdir qt#cd qt#mkdir lib#mkdir bin#cp -dR $QTEDIR/lib/libqte-mt.
11、* ./ /將編譯Qt/E生成的庫文件拷到lib目錄中,在這里主要是用到lib中的4個文件:libqte-mt.so、libqte-mt.so.3、libqte-mt.so.3.3、libqte-mt.so.3.3.5最后我們通過NFS將生成的文件系統(tǒng)加載到硬件目標平臺上。4開發(fā)流程整個開發(fā)環(huán)境建立起來后,開發(fā)流程如下:1)先在宿主機調(diào)用QTX下的designer工具,建立工程文件,編寫程序并調(diào)試(例如建立)2)確認程序無誤后,調(diào)用QTE下的qmake對工程文件進行交叉編譯/usr/local/qte/bin/qmake ;make;3)把交叉編譯生成的二進
12、制執(zhí)行文件放到目標板的文件系統(tǒng)中cp hello /home/root/qt/bin4)在目標板上運行#export QTDIR=/qt#export PATH=$QTDIR/bin:$PATH#export LD_LIBRARY_PATH =$QTDIR/lib:$LD_LIBRARY_PATHHello qws5總結(jié)本文主要講述了Qt/Embedded開發(fā)環(huán)境的建立和移植,本文主要介紹了在嵌入式linux系統(tǒng)下QT/Embedded開發(fā)環(huán)境建立與移植。通過大量源代碼與分析,建立起在linux主機和s3c2410下的Qt/E開發(fā)環(huán)境,再對Qt/E程序進行移植,文章最后還指出QT程序的開發(fā)流程
13、。參考文獻1Blanchette J.C+GU I Programming wit h Qt 3Z.TrolltechAS.2004.2Trolltech.Qt Reference documentation version 31314Z.2004.3澤建,嵌入式水文信息采集智能終端的研究與設(shè)計,工業(yè)大學學位論文M.2003摘 要:QT是一個用于多種平臺圖形界面程序開發(fā)的C+工具包。同時QT還包含了一些工具使得編寫程序變得又快又直接。QT的跨平臺能力和國際化支持保證了QT應(yīng)用程序占有盡可能廣闊的市場。Qt/Embedded是面向嵌入式系統(tǒng)的QT版本。主要講述Qt/Embedded庫中基于ARM
14、的嵌入式Linux系統(tǒng)下的移植,同時使用一個簡單的應(yīng)用程序來說明Qt/Embedded應(yīng)用程序的開發(fā)流程。關(guān)鍵詞:QT;Qt/Embedded;交叉編譯;ARM QT是Trolltech公司開發(fā)的一個多平臺的C+圖形用戶界面應(yīng)用程序框架。Qt采用了完全面向?qū)ο蠼M件編程技術(shù),支持多平臺。Qt提供圖形用戶界面在嵌入式系統(tǒng)上開發(fā)的一系列開發(fā)工具包。該圖形系統(tǒng)最大的優(yōu)點是采用面向?qū)ο笤O(shè)計,移植性好,基于X Window的Qt桌面應(yīng)用程序可以非常方便的移植到嵌入式系統(tǒng)上。 &
15、#160; Qt/Embedded是在嵌入式環(huán)境下所使用的Qt。目前市面上所有上市的Linux PDA都是采用Qt/Embedded作為圖形接口的函數(shù)庫。Qt/Embedded的特性是可以直接在Framebuffer上顯示圖形接口,反應(yīng)的速度更快,這對硬件和容量都有限制的嵌入式環(huán)境非常重要。 主要介紹QT在基于ARM的嵌入式Linux系統(tǒng)下的移植與應(yīng)用。1 Qt/Embedded開發(fā)環(huán)境介紹 Qt/Emb
16、edded應(yīng)用程序的開發(fā)可以在安裝了一個跨平臺開發(fā)工具鏈的不同的平臺上編譯。系統(tǒng)采用的是在Linux平臺下開發(fā),在Linux平臺下以虛擬緩沖幀的方式來運行,其實是有一個X11的應(yīng)用程序虛擬了一個緩沖幀。通過指定顯示設(shè)備的寬度、高度和顏色深度,虛擬出來的緩沖幀將和物理的顯示設(shè)備在每個像素上保持一致。這樣每次調(diào)試應(yīng)用時開發(fā)人員就不用總是刷新嵌入式設(shè)備的FLASH 存儲空間,從而加速了應(yīng)用的編譯、和運行周期。 運行Qt 的虛擬緩沖幀工具的方法是:在Linux 的圖形模式下運行命令:qvfb(回車)
17、0; 當Qt 嵌入式的應(yīng)用程序要把顯示結(jié)果輸出到虛擬緩沖幀時,我們在命令行運行這個程序時,在程序名后加上-qws的選項。例如:$>hello-qws Qt包含了許多支持嵌入式系統(tǒng)開發(fā)的工具,其中一些工具我們會在別的地方介紹。最實用的工具(除了上面我們提到的虛擬緩沖幀)有 tmake、Qt designer(圖形設(shè)計器)、uic和moc。(1)tmake tmake
18、 是一個為編譯Qt/Embedded 庫和應(yīng)用而提供的Makefile 生成器。它能夠根據(jù)一個工程文件(.pro)產(chǎn)生不同平臺下的Makefile 文件。開發(fā)者可以使用Qt 圖形設(shè)計器可視化地設(shè)計對話框而不需編寫一行代碼。使用Qt圖形設(shè)計器的布局管理可以生成具有平滑改變尺寸的對話框,tmake 和Qt 圖形設(shè)計器是完全集成在一起的。(2)Qt designer Qt Designer是設(shè)計窗口組件(Widget)的應(yīng)用程序,在安裝Qt的bin目錄下輸入./designer命令,就啟動一個包含很多Qt組件的可視化
19、界面。在此組織應(yīng)用程序的各組建分布很方便,最后生成一個file.ui和main.cpp文件;file.ui是用XML語言編寫的一個文本。(3)uic(user interface compiler) uic是從XML文件生成代碼的用戶界面編譯器,用來將file.ui文件生成file.h和file.cpp文件(命令如:uic -o file.h file.ui uic -o file.cpp file.ui),但生成的這兩個文件不是標準的純C+代碼,通常稱為Qt的C+擴展,因為Qt的對象間運用了信號和插槽的通信機制,在文件中
20、用Q_OBJECT宏來標識。(4)moc(元對象編譯器) moc用來解析一個C+文件中的類聲明并且生成初始化對象的C+代碼,moc在讀取C+源文件,如果發(fā)現(xiàn)其中一個或多個類的聲明中含有Q_OBJECT宏,就給出這個使用Q_OBJECT宏的類生成另外一個包含元對象代碼的C+元文件;元對象代碼對信號插槽機制、運行時的類型信息和動態(tài)屬性系統(tǒng)是需要的。2 Qt/Embedded庫的移植 2.1 Qt/Embedded開發(fā)環(huán)境的安裝1
21、160; 一般來說,嵌入式應(yīng)用程序都是先在裝有Linux操作系統(tǒng)的PC機或工作站來完成Qt/Embedded的開發(fā),然后再把應(yīng)用程序交叉編譯后發(fā)布到嵌入式Linux系統(tǒng)下。在一臺裝有Linux操作系統(tǒng)的機器上建立Qt/Embedded開發(fā)環(huán)境,需要三個軟件安裝包:tmake工具安裝包,Qt/Embedded安裝包,Qt的X11版安裝包。 由于上述軟件安裝包有許多不同版本,要注意版本不同可能導致的沖突。Qt for X11安裝包的版本要比Qt/Embedded的版本舊。因為Qt for X
22、11安裝包的兩個工具uic和designer產(chǎn)生的源文件會和Qt/Embedded的庫一起被編譯,本著“向前兼容”的原則,Qt for X11的版本應(yīng)比Qt/Embedded的版本舊。本系統(tǒng)采用的是tmake 1.11;Qt/Embedded 2.3.7;Qt 2.3.2 for X11。 2.1.1安裝tmake在Linux命令模式下運行以下命令:#tar xfz tmake-1.11.tar.gz#export TMAKEDIR=$PWD/tmake-1.11#export TMAKEPATH=$TMAKE
23、DIR/lib/qws/linux-x86-g+#export PATH=$TMAKEDIR/bin:$PATH 2.1.2安裝Qt/Embedded 2.3.7在Linux命令模式下運行以下命令:#tar xfz qt-embedded-2.3.7.tar.gz#cd qt-2.3.7#export QTDIR=$PWD#export QTEDIR=$QTDIR#export PATH=$QTDIR/bin:$PATH#export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY
24、_PATH#./configure -qconfig -qvfb -depths 4,8,16,32#make sub-src上述命令./configure-qconfig-qvfb-depths 4,8,16,32指定Qt嵌入式開發(fā)包生成虛擬緩沖幀工具qvfb,并支持4,8,16,32位的顯示顏色深度。另外我們也可以在configure的參數(shù)中添加-system-jpeg和gif,使Qt/Embedded平臺能夠支持jpeg、gif格式的圖形。 2.1.3安裝Qt/X11 2.3.2在Linux命令模式下運行
25、以下命令:#tar xfz qt-x11-2.3.2.tar.gz#cd qt-2.3.2#export QTDIR=$PWD#export PATH=$QTDIR/bin:$PATH#export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH#./configure -no-opengl#make#make -C tools/qvfb#make tools/qvfb/qvfb bin#cp bin/uic $QTEDIR/bin根據(jù)開發(fā)者本身的開發(fā)環(huán)境,可以在configure的參數(shù)中添加別的參數(shù),比如,-no-opengl或-no-xfs,可以通過
26、輸入./configure-help來獲得一些幫助信息。 2.2交叉編譯Qt/Embedded的庫2-3Qt/Embedded應(yīng)用程序最終是要在嵌入式Linux系統(tǒng)下運行,所以要把Qt嵌入式應(yīng)用程序編譯成支持在開發(fā)板上運行的目標代碼之前,需要兩樣東西,一是基于目標板的交叉編譯器,另一個是交叉編譯后的Qt/Embedded庫。 2.2.1安裝交叉編譯工具交叉編譯是指一個處理器平臺上編譯產(chǎn)生一個工程代碼的另一個處理器的目標代碼。通過下載并修改toolchain作為交叉編譯工具,要
27、求最好使用cross-3.3.2與其以后的版本,這樣才能對Qt/Embedded有良好支持。 2.2.2交叉編譯Qt/Embedded庫 當有了ARM的linux編譯器后,就可以使用這個編譯器進行交叉編譯Qt/Embedded庫的源代碼,從而產(chǎn)生一個以ARM為目標代碼的Qt/Embedded庫。具體過程如下:(1)解壓Qt/Embedded在Linux命令模式下運行如下命令:#tar xfz qt-embedded-2.3.7.
28、tar.gz(2)配置Qt/Embedded的安裝#cd qt-2.3.7#export QTDIR=$PWD#export QTEDIR=$QTDIR#.cp /配置文件所在路徑/qconfig-local.h ./src/tools#make clean#./configure -xplatform linux-arm-g+ -shared -debug -qconfig local -qvfb -depths 4,8,16,32#makeQt/Embedded的安裝選項有很多個,可以直接輸入“”來運行配置。Qt/Embedded的安裝選項還允許自己定制一個配置文件,來有選擇的編譯Qt/E
29、mbedded庫,這個安裝選項是“-qconfig local”;當指定這個選項時,Qt/Embedded庫中安裝過程會尋找qt-2.3.7/src/tools/qconfig-local.h這個文件來編譯Qt/Embedded庫。在定制中添加了對觸摸屏顯示的支持。 2.3 Qt/Embedded支持觸摸屏顯示45 Qt/Embedded 2.x系列中,觸摸屏設(shè)備和鍵盤設(shè)備需要根據(jù)具體的驅(qū)動程序接口中Qt/Embedded中設(shè)備實現(xiàn)對應(yīng)的設(shè)備操作類。其中對應(yīng)于鼠標類設(shè)備的實現(xiàn)
30、位于src/kernel/qwsmouse_qws.cpp中。在文件qwsmouse_qws.cpp中添加對觸摸屏的支持。具體修改如下:(1)定義和Linux核文件driver/input/tsdev.c中數(shù)據(jù)結(jié)構(gòu)ts_event相一致的TS_EVENT數(shù)據(jù)結(jié)構(gòu),定義如下:#if defined(QT_QWS_IPAQ)typedef struct short pressure; short x; short y;
31、60; short millisecs; TS_EVENT;(2)修改校準文件的位置在函數(shù)void QCalibratedMouseHandler:writeCalibration()和void QCalibratedMouseHandler:readCalibration()中修改如下:Qstring calFile = “/tmp/pointercal”;(3)對打開的設(shè)備文件進行修改在函數(shù)QTPanelHandlerPrivate:QTPanelHandlerPrivate中,修改如下:mouseFD=open(“/dev/input/ts0”,O_
32、RDONLY | O_NDELAY);(4)由于核TS_EVENT結(jié)構(gòu)中,當觸摸屏按下時對pressure的設(shè)置為1,因此在void QTPanelHandlerPrivate:readMouseData()函數(shù)中把if(data->pressure>=QT_QWS_TP_PRESSURE_THRESHOLD)修改為:if(data->pressure) 2.4移植Qt/Embedded庫在ARM板的根文件系統(tǒng)的tmp目錄下創(chuàng)建新目錄qt,在qt目錄下創(chuàng)建新目錄lib。把交叉編譯后生成的Qt/Embedded庫拷貝到ARM板上的根文件系統(tǒng)下
33、的/tmp/qt/lib目錄下。在使用QT庫之前要設(shè)置環(huán)境變量。命令如下:#export QTDIR=/tmp/qt#export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH這樣Qt/Embedded應(yīng)用程序就可以在ARM板上移植了。3 Qt/Embedded應(yīng)用程序的開發(fā)開發(fā)一個Qt應(yīng)用程序的流程如下6: 3.1生成一個工程文件(.pro文件) 一個應(yīng)用通常對應(yīng)一個工程文件,生成一個工程文件,并對它做一些簡單的編輯,然后使用一個專
34、門的工具(例如tmake)處理這個工程文件,就可以生成一個Makefile文件。 產(chǎn)生一個工程文件的其中一個方法是使用progen命令(progen程序可以在tmake的安裝路徑下找到)。下面是使用progen產(chǎn)生一個名為hello的工程文件的命令:progen -t app.t -o 產(chǎn)生的工程文件并不完整,開發(fā)者還需手動往里添加工程所包含的頭文件,源文件等信息。 &
35、#160; 3.2新建一個窗體 在qt-2.3.2的安裝路徑的bin目錄下運行“./designer”命令,就啟動了一個Qt圖形編輯器。點擊編輯器的“new”菜單,彈出了一個“new Form”對話框,在這個對話框里我們選擇“Widget”,然后點擊“OK”按鈕,這樣我們就新建了一個窗體。接著,我們可以對這個窗體進行設(shè)置。 設(shè)置完成后,將其保存為hello.ui文件,這個文件就是project窗體的界面存儲文件。
36、160; 3.3生成窗體類的頭文件和實現(xiàn)文件 界面文件使用uic工具產(chǎn)生出窗體類的頭文件和實現(xiàn)文件,例如hello.ui節(jié)目文件產(chǎn)生hello窗體類的頭文件和實現(xiàn)文件,具體方法如下:#cd qt-2.3.7/bin#uic -o hello.h hello.ui#uic -o hello.cpp -impl hello.h hello.ui這樣我們就得到hello窗體類的頭文件hello.h和實現(xiàn)文件hello.cpp。接下來根據(jù)我們要實現(xiàn)的具體功能,在hello.cpp文件里添加相應(yīng)的代碼。
37、60; 3.4編寫主函數(shù)main() 一個Qt/Embedded應(yīng)用程序應(yīng)該包含一個主函數(shù),主函數(shù)所在的文件名是main.cpp。主函數(shù)是應(yīng)用程序執(zhí)行的入口點。 3.5編輯工程文件 在工程文件中添加窗體類的頭文件、實現(xiàn)文件和主函數(shù)文件。 3.6生成Makefile文件
38、0; 編譯器是根據(jù)Makefile文件容來進行編譯的,所以需要生成Makefile文件。Qt提供的tmake工具可以幫助我們從一個工程文件(.pro文件)中產(chǎn)生Makefile文件。從工程文件生成一個Makefile文件的具體做法如下: 把環(huán)境變量$TMAKEPATH所指的目錄設(shè)置為arm編譯器的配置目錄,把當前QTDIR環(huán)境變量指向Qt/Embedded的安裝路徑,這樣就可以使用tmake來生成Makefile文件。#export TMAKEPATH=/tmake安裝路徑/qws/linux-ar
39、m-g+#export QTDIR=/qt-2.3.7#tmake -o Makefile 當前目錄生成的Makefile文件,需要進行一些修改,具體修改如下:將LINK = arm-linux-gcc 改為LINK = arm-linux-g+ 3.7編譯整個工程在命令行下輸入make命令對整個工程進行編譯。#make這樣make生成的二進制文件就可以在ARM上允許了。4 實驗結(jié)果 實現(xiàn)了簡單的qt應(yīng)用程序,主要有按鈕和標簽,點擊按鈕display就會在標
40、簽上顯示“Hello World!”,點擊按鈕clear就會清空標簽。應(yīng)用程序首先在pc上調(diào)試通過后,再重新交叉編譯后移植到ARM板上。下圖是該qt應(yīng)用程序在pc上運行的結(jié)果。Ubuntu 9.10+qt-embedded-linux-opensource-src-4.5.0+tslib-1.4.1+gcc-4.3.3+gcc-4.1移植經(jīng)驗日期:2010-04-20 來源:Linux社區(qū) wenes 基于Ubuntu9.10+qt-embedded-linux-opensource-src-4.5.0+tslib-1.4.1+gcc-4.3.3+gcc-4.1目標平臺:TQ2440(s3c2
41、440)+LCD w3.5-2(東華)+kernel:+QT4.5 Qtopia-2.2.0 Nand Flash:256MB+Nor Flash:2MB+SDRAM:64MBS3C2440-ARMV4T(哈佛)-ARM920T-ARM9/etc/profile文件:export PATH=/media/_home/opt/4.3.3/bin:$PATH arm-linux-gcc-4.3.3export PATH=/media/_home/opt/EmbedSky/qt-4.5/qt-embedded-linux-opensource-src-4.5.0/tslib-1.4.
42、1:$PATH命令:ln -s /usr/bin/make /usr/bin/gmake Ubuntu 9.10source /etc/profilesudo apt-get install gcc-4.1 ? m4 autoconf automake libtool tar -vxjf qt-embedded-linux-opensource-src-4.5.0_20091216 -C /media/_home/opt/EmbedSky/qt-4.5tar -vxjf tslib-1.4.1.tar.bz2 -C /media/_home/opt/EmbedSky/qt-4.5/qt-emb
43、edded-linux-opensource-src-4.5.0編譯 tslib-1.4.1:cd /media/_home/opt/EmbedSky/qt-4.5/qt-embedded-linux-opensource-src-4.5.0/tslib-1.4.1./build或者./configure -host=arm-linux -disable-hp3600 -disable-arctic2 -disable-mk712 -disable-collie -disable-corgi -disable-ucb1x00 -disable-linear-h2200 -with-gnu-ld
44、 -prefix=$PWD/_install ac_cv_func_malloc_0_nonnull=yesmake && make install編譯qt-embedded-linux-opensource-src-4.5.0:ARM/media/_home/opt/EmbedSky/qt-4.5/qt-embedded-linux-opensource-src-4.5.0/mkspecs/qws/linux-arm-g+/qmake.conf文件:# qmake configuration for building with arm-linux-g+#include(/me
45、dia/_home/opt/EmbedSky/qt-4.5/qt-embedded-linux-opensource-src-4.5.0/mkspecs/common/g+.conf)include(/media/_home/opt/EmbedSky/qt-4.5/qt-embedded-linux-opensource-src-4.5.0/mkspecs/common/linux.conf)include(/media/_home/opt/EmbedSky/qt-4.5/qt-embedded-linux-opensource-src-4.5.0/mkspecs/common/qws.con
46、f)# modifications to g+.confQMAKE_CC = /media/_home/opt/4.3.3/bin/arm-linux-gccQMAKE_CXX = /media/_home/opt/4.3.3/bin/arm-linux-g+QMAKE_LINK = /media/_home/opt/4.3.3/bin/arm-linux-g+QMAKE_LINK_SHLIB = /media/_home/opt/4.3.3/bin/arm-linux-g+# modifications to linux.confQMAKE_AR = /media/_home/opt/4.3
47、.3/bin/arm-linux-ar cqsQMAKE_OBJCOPY = /media/_home/opt/4.3.3/bin/arm-linux-objcopyQMAKE_STRIP = /media/_home/opt/4.3.3/bin/arm-linux-stripQMAKE_INCDIR = export PATH=/media/_home/opt/EmbedSky/qt-4.5/qt-embedded-linux-opensource-src-4.5.0/tslib-1.4.1/_install/include:$PATHQMAKE_LIBDIR = export PATH=/
48、media/_home/opt/EmbedSky/qt-4.5/qt-embedded-linux-opensource-src-4.5.0/tslib-1.4.1/_install/lib:$PATHload(qt_config)命令:cd /media/_home/opt/EmbedSky/qt-4.5./arm_qt4.5_build 要修改或者:cd ./qt-embedded-linux-opensource-src-4.5.0./configure -prefix /media/_home/opt/EmbedSky/qt-4.5/_install/arm/ -release -sh
49、ared -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-libjpeg -make libs -nomake examples -nomake docs -nomake demo -no-nis -no-cups -no-iconv -no-dbus -no-openssl -xplatform qws/linux-
50、arm-g+ -embedded arm -little-endian -qt-freetype -depths 16 -qt-gfx-linuxfb -qt-gfx-transformed -qt-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-usb -no-glib -armfpa -qt-mouse-tslib -I/media/_home/opt/EmbedSky/qt-4.5/qt-embedded-linux-opensource-src-4.5.0/tslib-1.4.1/_install/include -L/media/_h
51、ome/opt/EmbedSky/qt-4.5/qt-embedded-linux-opensource-src-4.5.0/tslib-1.4.1/_install/libgmakegmake install編譯qt-embedded-linux-opensource-src-4.5.0:X86cd /media/_home/opt/EmbedSky/qt-4.5./x86_qt4.5_build 要修改或者:cd ./qt-embedded-linux-opensource-src-4.5.0./configure -prefix /media/_home/opt/EmbedSky/qt-
52、4.5/_install/x86/ -release -shared -fast -qt-sql-sqlite -plugin-sql-sqlite -nomake demos -nomake examples -silentgmakegmake install程序運行:-X86上命令 第一步運行qvfb后先安裝第二步運行./myapp -qws Sun VirtualBoxlinux 外windows XP共享文件夾工具上部菜單欄:設(shè)備(D)-分配數(shù)據(jù)空間(S)- +添加數(shù)據(jù)空間 -數(shù)據(jù)空間位置 D:share-linux ; 數(shù)據(jù)空間名稱 share_linux -固定分配 -確定: #s
53、udo mount -t vboxsf share_linux /mnt/sharearm下NFS掛載開發(fā)板進入uboot下載模式(超級終端下)輸入命令0->1->3(PC的IP-linux虛擬機的IP)->(開發(fā)板linux的IP)->(開發(fā)板掩碼)->/media/_home/root_nfs(PC的linux的NFS文件系統(tǒng)路徑)->s(保存)->q(退出)-重啟開發(fā)板條件:網(wǎng)線通,串口通,開發(fā)板的uboot和linux-kernel有,PC的linux的NFS文件系統(tǒng)有,開發(fā)
54、板的yaffs文件系統(tǒng)可以沒有。mount t nfs 3:/media/_home/root_nfs /mnt/rootwd o nolock相關(guān)gcc版本問題bug:用新立得軟件包管理器安裝gcc-4.1(自帶的gcc4.3.2無法編譯成功!但不用卸載),然后$ sudo ln -s /usr/bin/gcc-4.1 /usr/bin/gcc (gcc只是一個soft link,回頭再鏈回到gcc-4.3就可以了)如果不安裝gcc-4.1,就會出現(xiàn)2個問題: /usr/include/bits/fcntl2.h:51: error: call to '_ope
55、n_missing_mode' declared with attribute error: open with O_CREAT in second argument needs 3 arguments編譯到這里的時候提示這個錯誤,是因為沒有第三個參數(shù),gcc 4.3.2嚴格的語法檢查不讓通過;你可以修改 gcc-<版本號>/gcc/collect2.c的1575行附近,加上第三個參數(shù)0777,變成 ="#c60a00" style="BACKGROUND-COLOR:transparent">redir_handle = op
56、en (redir, O_WRONLY | O_TRUNC | O_CREAT, 0777); 然后就可以繼續(xù)編譯 盡管可以繼續(xù)編譯,但是還會出現(xiàn)這個問題:* buffer overflow detected *: mipsel-9tdmi-linux-gnu-ar terminated哈,編譯出來的這個程序根本就有問題!所以還是老老實實地安裝gcc 4.1吧!編譯gcc-3.3.6的時候,出現(xiàn)以下錯誤: /usr/include/bits/fcntl2.h:51: error: call to '_open_missing_mode' declared with attribute error: open with
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代人如何通過飲食改善腸胃問題
- 牙科患者需求與商業(yè)價值挖掘
- 2024-2025學年新教材高中英語 Unit 6 Earth first預(yù)習 新知早知道2說課稿 外研版必修第二冊
- 12《示兒》說課稿-2024-2025學年五年級上冊語文統(tǒng)編版
- 《11~20的認識-11~20的認識》(說課稿)-2024-2025學年一年級上冊數(shù)學人教版
- 2024-2025學年新教材高中地理 第一章 人口 第一節(jié) 人口分布(2)說課稿 新人教版必修2
- 1學會尊重-《每個人都應(yīng)得到尊重》(說課稿)2023-2024學年統(tǒng)編版道德與法治四年級下冊
- 9正確認識廣告《學會識別廣告》說課稿-2024-2025學年道德與法治四年級上冊統(tǒng)編版
- 27 故事二則 紀昌學射 說課稿-2024-2025學年語文四年級上冊統(tǒng)編版
- 兩小兒辯日(教案)-統(tǒng)編版六年級語文下冊
- 2024年廣東省高考地理真題(解析版)
- DB37-T3953-2020醫(yī)療衛(wèi)生機構(gòu)安全風險分級管控體系實施指南
- 浩順一卡通軟件新版說明書
- 植物檢疫員崗位職責說明書
- 2023~2024學年二年級下冊語文期末模考試卷·創(chuàng)意情境 統(tǒng)編版
- 2024年北師大版六年級下冊數(shù)學期末測試卷(各地真題)
- 2024年江蘇農(nóng)牧科技職業(yè)學院單招職業(yè)適應(yīng)性測試題庫附答案
- 經(jīng)理層年度任期經(jīng)營業(yè)績考核及薪酬辦法
- 2024高考物理廣東卷押題模擬含解析
- 青少年農(nóng)業(yè)科普館建設(shè)方案
- 新測繪法解讀
評論
0/150
提交評論