<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > arm-linux-qt環(huán)境的建立

          arm-linux-qt環(huán)境的建立

          作者: 時(shí)間:2016-11-11 來(lái)源:網(wǎng)絡(luò) 收藏
          Arm-Linux嵌入式QT/E環(huán)境的建立(qt/e 3.x系列)

          QT/E 3.x系列比QT/E 2.x系列有非常大的改進(jìn),大大提高了開(kāi)發(fā)進(jìn)度,不再使用tmake,安裝也更簡(jiǎn)單。但目前在網(wǎng)上關(guān)于QT/E 3.x系列的介紹還是比較少,
          所以本文介紹一下QT/E 3.x系列的安裝。
          一、建立arm交叉編譯工具鏈
          在安裝QT/E之前,應(yīng)確保arm-linux交叉編譯工具鏈已經(jīng)建立,如果還沒(méi)有可以參考以下步驟建立。
          1、下載交叉編譯工具cross-2.95.3.tar.bz2(或其他版本如:cross-3.4.4.tar.bz2),這是已經(jīng)制作好的arm交叉編譯工具鏈,只需解壓及建交環(huán)境變量即可使用。
          2、把文件cross-2.95.3.tar.bz2拷貝到一個(gè)文件夾,這里我用:/usr/local/arm這個(gè)目錄。 注意后面建立環(huán)境變量時(shí)要與之對(duì)應(yīng)。
          3、解壓 tar -xjvf cross-2.95.3.tar.bz2
          4、建立環(huán)境變量復(fù)制內(nèi)容到剪貼板代碼:
          export PATH=/usr/local/arm/2.95.3/bin:$PATH或者也可以寫進(jìn)文件 ~/.bashrc中,這樣就不用每次開(kāi)機(jī)都export啦。復(fù)制內(nèi)容到剪貼板代碼:
          vi ~/.bashrc
          在后面加上 export PATH=/usr/local/arm/2.95.3/bin:$PATH到此arm-linux交叉編譯工具鏈就已經(jīng)建好了。
          二、編譯QT
          1、QT/E自由版可到官網(wǎng)ftp下載。網(wǎng)址是:ftp://ftp.trolltech.com/qt/source/??勺约哼x擇一個(gè)版本下載,個(gè)人認(rèn)為QT/E 3.x系列比較好用,
          不過(guò)QT/E 2.x系列在網(wǎng)上的資料比較多。但建議不用qt/e 3.3.x 的版本,因?yàn)樵诒救碎_(kāi)發(fā)的過(guò)程當(dāng)中試用過(guò)qt/e 3.3.4和qt/e3.3.8,發(fā)現(xiàn)它們?cè)贏RM開(kāi)發(fā)板上占
          CPU的資源特高,一直占cpu 98%左右,現(xiàn)在我還沒(méi)找到原因,不知道有沒(méi)有哪位朋友也遇到這個(gè)問(wèn)題。推薦用qt/e 3.1.0版本,我正在用,沒(méi)遇到什么問(wèn)題。
          (注:?jiǎn)栴}已經(jīng)得到解決,原來(lái)是鍵盤接口沒(méi)做好,等有空與大家分享一下移植鍵盤接口的過(guò)程)
          2、在這里,本人假設(shè)用的是 qt-embedded-free-3.1.0.tar.bz2
          3、把文件qt-embedded-free-3.1.0.tar.bz2 拷貝到一個(gè)文件夾,這里我用:/usr/local/arm這個(gè)目錄。 注意后面建立環(huán)境變量時(shí)要與之對(duì)應(yīng)。
          4、解壓 tar -xjvf qt-embedded-free-3.1.0.tar.bz2
          把解壓后的文件夾qt-embedded-free-3.1.0改為qte。(可以不改,這里是為了方便,注意后面建立環(huán)境變量時(shí)要與之對(duì)應(yīng))
          mv qt-embedded-free-3.1.0 qte
          5、建立環(huán)境變量
          vi ~/.bashrc
          在后面加上復(fù)制內(nèi)容到剪貼板代碼:
          export QTDIR=/usr/local/arm/qte
          export QTEDIR=$QTDIR
          export PATH=$QTDIR/bin:$PATH
          export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH(請(qǐng)重新登陸,以使得環(huán)境變量生效)
          6、配置QT
          進(jìn)入QT/E目錄: cd $QTDIR
          輸入: ./configure -embedded arm -thread -no-cups -qvfb -depths 4,8,16,32

          本文引用地址:http://www.ex-cimer.com/article/201611/316890.htm

          上述選項(xiàng): -embedded arm 指目標(biāo)平臺(tái)為arm; -thread 表示支持qt線程,本人開(kāi)發(fā)當(dāng)中用到; -qvfb 表示支持虛擬緩沖幀工具qvfb;
          -depths 4,8,16,32 表示支持4,8,16,32 位的顯示顏色深度。還有很多選項(xiàng)就不一一列舉,請(qǐng)查看 ./configure -help。
          此外還有一個(gè)選項(xiàng)我沒(méi)用的是 -qconfig local,你可以把一些開(kāi)關(guān)變量寫到一個(gè)文件qconfig-local.h 中,并把它放到$QTDIR/src/tools下。
          可參考這個(gè)目錄下的qconfig-small.h、qconfig-medium.h 、qconfig-large.h等文件,直接使用它們也行,如: -qconfig small 。通過(guò)這些開(kāi)關(guān)變量,
          可以把一些開(kāi)發(fā)當(dāng)中用不著的構(gòu)件去掉,減少qt庫(kù)的大小。這里要對(duì)QT比較熟練,初學(xué)者可先不理。

          (本人在家里編譯到這里曾出現(xiàn)編譯 $QTDIR/include/qvaluestack.h 這個(gè)文件的時(shí)候出錯(cuò),后來(lái)把qt3.3.8對(duì)應(yīng)的文件拷貝過(guò)來(lái)覆蓋便通過(guò)了,
          估計(jì)是與gcc的版本不兼容的問(wèn)題,我在公司里沒(méi)出現(xiàn)過(guò)這種問(wèn)題)
          7、編譯
          make sub-src // 指定按精簡(jiǎn)方式編譯開(kāi)發(fā)包,也就是說(shuō)有些Qt 類未被編
          譯。
          8、測(cè)試
          至此編譯工作完成,最后測(cè)試一下是否能正常使用。我們可以用QT自帶的例子來(lái)測(cè)試,如:
          cd $QTDIR/examples/aclock //或你自己新建一個(gè)QT工程也行
          make clean //把原來(lái)的清掉
          rm *.pro Makefile //刪掉,重新建立工程文件
          qmake -project
          qmake -spec $QTDIR/mkspecs/qws/linux-arm-g++ -o Makefile
          -spec指定目標(biāo)板的配置文件,這里我做的是linux arm平臺(tái),注意在這里,$QTDIR/mkspecs/qws/linux-arm-g++ 它不是編譯器,是一個(gè)配置文件,
          而編譯時(shí)用的編譯器是我們?cè)诘谝徊浇⒌腶rm交叉編譯工具鏈里面的編譯器。
          make
          如果沒(méi)出錯(cuò)就表示你的QT/E環(huán)境已經(jīng)成功建立。如果提示說(shuō)cannot find -lqte, 那么你試一下修改Makefile文件,找到-lqte ,把它改為-lqte-mt
          再make一次一般就行了。這是因?yàn)槿绻玫絈T線程或其它一些原因,它生成的庫(kù)不再是libqte.so.3.1.0,而是libqte-mt.so.3.1.0,所以它便找不到了。
          三、移植到開(kāi)發(fā)板(以下都是在目標(biāo)機(jī)環(huán)境下)
          1、新建一個(gè)目錄,如:/qt/lib。進(jìn)入此目錄 cd /qt/lib
          2、通過(guò) ftp 把上面生成的qt庫(kù)文件libqte-mt.so.3.1.0下載到開(kāi)發(fā)板/qt/lib/目錄下。(注意:不要用wget 下載,會(huì)破壞庫(kù)文件,
          從而出現(xiàn) ld.so: dynamic-link.h: 62: elf_get_dynamic_info: Assertion `! "bad dynamic tag"
          failed!.這種錯(cuò)誤)
          3、創(chuàng)建qt庫(kù)連接:
          ln -s libqte-mt.so.3.1.0 libqte-mt.so
          ln -s libqte-mt.so.3.1.0 libqte-mt.so.3
          ln -s libqte-mt.so.3.1.0 libqte-mt.so.3.1
          4、建立環(huán)境變量
          vi ~/.bashrc
          在后面加上復(fù)制內(nèi)容到剪貼板代碼:
          export QTDIR=/qt
          export QTEDIR=$QTDIR
          export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH4、到此目標(biāo)板的環(huán)境已經(jīng)建好。現(xiàn)在可以把上面的例子aclock下載到目標(biāo)板上試一下能不能跑起來(lái)!
          在開(kāi)發(fā)板控制臺(tái)下輸入: ./aclock -qws
          如果能跑起來(lái)但是鍵盤用不了,那是正常的情況,因?yàn)殒I盤、鼠標(biāo)等設(shè)備的接口還沒(méi)加進(jìn)QT/E的原因,而這個(gè)不是一兩句話能說(shuō)清的,所以留到以后再另外補(bǔ)充!
          補(bǔ)充一點(diǎn):如果有類似這樣的提示: "./aclock: error while loading shared libraries: libstdc++.so.6: cannot load shared object file: No such file or directory." 你可以從我們第一步建立的arm交叉編譯工具鏈里的/usr/local/arm/2.95.3/arm-linux/lib/目錄下找到相應(yīng)的庫(kù)文件下載到開(kāi)發(fā)板的 /lib 目錄下即可。--



          關(guān)鍵詞: armlinuxqt環(huán)

          評(píng)論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();