www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]QT/E和Qtopia的編譯詳解

(一)編譯PC上的qpe

     今天我給大家分享一下我自己從編譯PC上的QT到編譯ARM上的QT(交叉編譯QPE)的過程,首先說說編譯PC上的QT/E,我起初的時候不知道編譯PC上的QT/E編譯qpe和交叉編譯后的qpe有什么不同,后來才發(fā)現(xiàn)的確有不同點:PC上的QT/E的qpe環(huán)境編譯成功以后輸入:
#qvfb 彈出了虛擬幀緩沖器,然后我們再打開一個終端,輸入:
#qpe 在返回上一個終端,發(fā)現(xiàn)qpe的圖形界面在虛擬幀緩沖的那個黑色框架中顯示出來
    而交叉編譯qpe以后,輸入
#qvfb 彈出虛擬幀緩沖器以后,然后再打開一個終端,輸入:
#qpe 系統(tǒng)出現(xiàn)錯誤:cannot execute binary file 說明不支持這樣的二進制文件格式
    總結(jié)得出pc編譯QT/E以后qpe 是i386 的,可以直接在PC機器上運行,交叉編譯后的qpe是ARM的,只有掛接了板子后才可以運行(大家可以找到qpe,然后用file命令檢測),具體操作如下:
#locate qpe | more  找到qpe位置,找到后轉(zhuǎn)到它所在的目錄,然后
#file qpe  這樣就可以看它(qpe)所支持的處理器格式了.

    下面我們來一步步分析我的編譯過程,
    硬件就不用說了:內(nèi)存256MB,主頻1.6GHZ,因為我是學寫驅(qū)動的所以裸裝RedHat9.0(2.4.20-8)
    交叉編譯工具是2.95.3的,我把它放到了/usr/local/arm/目錄中,然后在/etc/profile中配置了它的路徑
    注意:大多數(shù)廠家都提供了編譯QT/E和Qtopia的腳本,我建議自己跟著他們提供的腳本一步一步的做,這樣以來錯了也知道是在哪一步出問題。
    首先在創(chuàng)建目錄/yehuo2410/qt_x86用于編譯QT/E
    商家提供以下編譯資料:
tmake-1.11.tar.gz  ,qt-embede-2.3.7.tar.gz , qt-x11-2.3.2.tar.gz,qt-free-1.7.tar.gz,這些對編譯PC上的QT/E的qpe足夠了,不過在交叉編譯qpe的時候,還差兩份資料:e2fsprogs.1.35.tar.gz,jpegsrc.v6b.tar.gz(必須要)
    現(xiàn)在開始腳本分析了:
#cd /yehuo2410 (野火2410是我自己取的,不局限于任何廠家ARM開發(fā)板)
#tar xzvf  +各個壓縮包,解壓到/yehuo2410
    以下建立通用的目錄
#mv tmake-11 tmake
#mv qt-2.3.7.tar.gz qt
#mv qt-2.3.2.tar.gz  qt-x11
#mv qt-free-1.7.tar.gz qtopia

#cd qt-x11  轉(zhuǎn)到這個目錄開始編譯相應(yīng)的工具
#export QTDIR=$PWD  配置當前QTDIR
#echo yes | ./configure -static -ro-xft -no-opengl -no-sm  形成Makefile文件
#make -C src/moc 編譯形成moc(元對象編譯器)工具
#cp src/moc/moc bin  拷貝上一步生成的moc到當前目錄的bin
#make -C src  這一步是必須的
    以下兩步形成設(shè)計器designer和虛擬幀緩沖器qvfb
#make -C tools/designer
    這時候designer工具不會在tools/designer下形成,而是在當前目錄(qt-x11的bin目錄)下形成,故不用拷貝,你會發(fā)現(xiàn)qt-x11/bin下多了uic,和designer工具,uic首先形成,因為designer在編譯是要用到uic工具,uic工具是qt中用來處理.ui文件的工具。
#make -C tools/qvfb
#cp tools/qvfb bin 

#strip bin/uic bin/moc bin/designer bin/qvfb 是對各個工具可執(zhí)行文件進行節(jié)優(yōu)化
#cp /bin/* ../qt/bin  拷貝這些工具到 qt-x11的兄弟目錄qt中的bin目錄中,qt/bin中有三個文件:findtr,
qt20fix,qtrename140,而qt-x11/bin中也有,拷貝的時候系統(tǒng)問題是否覆蓋(qt-x11/bin里的這三個文件是否覆蓋qt/bin里的這三個文件?),我選擇是。
# cd ..
    下面開始配置環(huán)境變量,很多腳本都這樣寫
#export QTDIR=$PWD/qt
#export QTEDIR=$QTDIR
#export QPEDIR=$PWD/qtopia
#export TMAKEDIR=$PWD/tmake
#export TMAKEPATH=$TMAKEDIR/llib/qws/linux-generic-g++(常規(guī)g++編譯器)這是和交叉編譯qpe 的一處不同,qws目錄中有很多包括手機,PDA和ARM之類的g++編譯器。
#export PATH=$QTDIR/bin:$QPEDIR/bin:$TMAKEDIR/bin:$PATH
#export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH 配置了這里就不用配置/etc./ld.so.conf文件了。
    上述配置固然好,不過這樣只是針對當前終端有效,如果再打開一個新終端,那么這些變量在新終端中不會生效,保險的方法是:在/etc/profile目錄里把這些配置信息輸入到profile的末尾,不過不能用$PWD了 要把所有$PWD字樣改成/yehuo2410/qt_x86,注銷系統(tǒng),重新登陸后,環(huán)境變量生效(有個立即生效的方法我忘記了)。
    如果這里沒有配置好,那么在編譯的時候可能出現(xiàn)tmake版本過低,然后系統(tǒng)要求起碼要1.11版本的
tmake,這是因為我們選擇了全部安裝Linux操作系統(tǒng),系統(tǒng)本來有個1.7版本的tmake,在沒有配置TMAKEDIR和TMAKEPATH的時候系統(tǒng)自動使用自己1.7版本的tmake,所以出錯。
#cd qt
#make clean 這里似乎沒有必要,不過建議執(zhí)行一下
#make -C src 注意:-C 選項是指在編譯是先轉(zhuǎn)到src目錄(不能自己直接轉(zhuǎn)到在src目錄make哦,因為我試過了,結(jié)果是失?。?br /> #cd ..
#cd qtopia/src  開始編譯在PC上可以執(zhí)行的qpe了
#./configure -platform linux-generic-g++
#make 
    大約半個小時就可以編譯完成
    完成后打開任意一個終端,輸入
#qvfb &
    打開另外新終端,輸入
#qpe &
    切換到老終端,就可以看到qpe在虛擬緩沖器qvfb上運行的界面,代表你編譯PC上的qpe成功了
    有時候出現(xiàn)con't fine dev/fb0
    只要在/etc/prioile文件中,輸入
export QWS_DLS_DISPLAY=QVFb:0
    注銷一次(有個可以立即生效的方法,我忘記了),就可以了
    編譯的過程大概就是這樣,這已經(jīng)是最簡單的過程,在Qtopia的編譯中會遇到更復(fù)雜,更繁瑣的問題。
 

[!--empirenews.page--](二)交叉編譯qpe
    現(xiàn)在我們開始交叉編譯qpe吧,不過要做好心理準備,因為整個過程將會遇到各種各樣的問題, 失敗是很平常的,關(guān)鍵是我們要挺過來,堅持和摸索是我們每一個計算機工作者的法寶,讓我們開始吧,和PC上不同的地方我會用紅色顯示出來!
    首先我們要準備編譯資料,商家提供以下編譯資料:
tmake-1.11.tar.gz  ,qt-embede-2.3.7.tar.gz , qt-x11-2.3.2.tar.gz,qt-free-1.7.tar.gz,這些對編譯PC上的QT/E的qpe足夠了,不過在交叉編譯qpe的時候,還差兩份資料:e2fsprogs.1.35.tar.gz,jpegsrc.v6b.tar.gz,所以必須去網(wǎng)站上下載,也可以向別人索要。
    同樣我在/yehuo2410/下建立目錄qt_arm作為交叉編譯目錄
好!我們開始分析腳本:
#cd /yehuo2410/qt_arm (拷貝上述所有壓縮包到該目錄包括e2fsprogs-1.35.tar.gz和jpegsrc.v6b.tar.gz兩個壓縮包)
當前目錄為/yehuo2410/qt_arm
#tar xzvf  +各個壓縮包,解壓到/yehuo2410/qt_arm,記得要解壓e2...和jpegsrc....兩個包哦
#mv tmake-11 tmake
#mv qt-2.3.7.tar.gz qt
#mv qt-2.3.2.tar.gz  qt-x11
#mv qt-free-1.7.tar.gz qtopia

#cd qt-x11  轉(zhuǎn)到這個目錄開始編譯相應(yīng)的工具
#export QTDIR=$PWD  配置當前QTDIR
#echo yes | ./configure -static -ro-xft -no-opengl -no-sm  形成Makefile文件
#make -C src/moc 編譯形成moc(元對象編譯器)工具
#cp src/moc/moc bin  拷貝上一步生成的moc到當前目錄的bin
#make -C src  這一步是必須的
以下兩步形成設(shè)計器designer和虛擬幀緩沖器qvfb
#make -C tools/designer
這時候designer工具不會在tools/designer下形成,而是在當前目錄(qt-x11的bin目錄)下形成,故不用拷貝,你會發(fā)現(xiàn)qt-x11/bin下多了uic,和designer工具,uic首先形成,因為designer在編譯是要用到uic工具,uic工具是qt中用來處理.ui文件的工具。
#make -C tools/qvfb
#cp tools/qvfb bin 

#strip bin/uic bin/moc bin/designer bin/qvfb 是對各個工具可執(zhí)行文件進行節(jié)優(yōu)化
#cp /bin/* ../qt/bin  拷貝這些工具到 qt-x11的兄弟目錄qt中的bin目錄中,qt/bin中有三個文件:findtr,
qt20fix,qtrename140,而qt-x11/bin中也有,拷貝的時候系統(tǒng)問題是否覆蓋(qt-x11/bin里的這三個文件是否覆蓋qt/bin里的這三個文件?),我選擇是。
# cd ..
下面開始配置環(huán)境變量,很多腳本都這樣寫
#export QTDIR=$PWD/qt
#export QTEDIR=$QTDIR
#export QPEDIR=$PWD/qtopia
#export TMAKEDIR=$PWD/tmake
#export TMAKEPATH=$TMAKEDIR/llib/qws/linux-arm-g++(常規(guī)g++編譯器)這點就和PC上的不同了,qws目錄中有很多包括手機,PDA和ARM之類的g++編譯器。
#export PATH=$QTDIR/bin:$QPEDIR/bin:$TMAKEDIR/bin:$PATH
#export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH 配置了這里就不用配置
/etc./ld.so.conf文件了,同樣,為了保險,我把上述信息寫到了/etc/profile文件中并且在/etc/profile中的$PWD替換為/yehuo2410/qt_arm,我們不用擔心以前編譯的PC版本的qpe會受到影響,當我們真正要用到PC版本的qpe的時把/etc/profile里面的這一部分涉及的/yehuo2410/qt_arm字符修改成/yehuo2410/qt_x86字符就可以了,當然,設(shè)置完成以后注銷系統(tǒng)以生效。
#cd ..
#cd qt
#make clean
    再次強調(diào)以下步驟是必要的,否則會出現(xiàn)cannot fine -lqte問題
#cp $QPEDIR/src/qt/qconfig-qpe.h src/tools
    在下一步中我發(fā)現(xiàn)編譯PC上的qpe時做到這一步時,會問你兩次(都回答yes),而這里只會問一次,當時我感到費解,因為和廠家提供的腳本不一樣(廠商提供的腳本是echo yes;echo no) ,我擔心是哪里出錯了,但是我依然往下做,直到最后也沒有出現(xiàn)這里的相關(guān)問題,所以就不用擔心
#echo yes|./configure -platform linux-arm-g++ -qconfig  qpe -qvfb -depths 16,24,32
#make -C src
 

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉