• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > QT/E和Qtopia的編譯詳解

    QT/E和Qtopia的編譯詳解

    作者: 時間:2011-05-12 來源:網(wǎng)絡(luò) 收藏

    (一)PC上的qpe

    本文引用地址:http://www.czjhyjcfj.com/article/150747.htm

    今天我給大家分享一下我自己從PC上的QT到ARM上的QT(交叉編譯QPE)的過程,首先說說編譯PC上的,我起初的時候不知道編譯PC上的編譯qpe和交叉編譯后的qpe有什么不同,后來才發(fā)現(xiàn)的確有不同點:PC上的的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和的腳本,我建議自己跟著他們提供的腳本一步一步的做,這樣以來錯了也知道是在哪一步出問題。
    首先在創(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é)果是失敗)
    #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)是最簡單的過程,在的編譯中會遇到更復(fù)雜,更繁瑣的問題。


    上一頁 1 2 下一頁

    關(guān)鍵詞: 詳解 編譯 Qtopia QT/E

    評論


    相關(guān)推薦

    技術(shù)專區(qū)

    關(guān)閉
    主站蜘蛛池模板: 宜都市| 合水县| 玉田县| 武胜县| 重庆市| 吉林省| 德阳市| 瓮安县| 阿拉善盟| 东港市| 临澧县| 陆川县| 长沙市| 阳西县| 绍兴市| 铁岭市| 丹江口市| 莆田市| 新宾| 张掖市| 玉龙| 社会| 盘锦市| 铁岭市| 乐业县| 田阳县| 会东县| 荔浦县| 宝兴县| 凌云县| 扎鲁特旗| 将乐县| 乌苏市| 湛江市| 葵青区| 曲松县| 富蕴县| 确山县| 蓬安县| 高雄市| 腾冲县|