轉(zhuǎn)自 http://qz.qq.com/252543352/blog?uin=252543352&vin=0&blogid=1307893503成功移植Qt4.7到2440,失敗是被誤導(dǎo)查看日志列表 發(fā)表于
其實(shí)Qtopia2.2.0是現(xiàn)成的,圖形界面也有,看起來還挺漂亮的,網(wǎng)上很多源碼也是基于Qtopia2.2.0的,為什么我要移植Qt4.7呢?我毛病呢...
都是因?yàn)槲野l(fā)現(xiàn)Nokia推出的Qt4.7的SDK中的Creator非常好用,我很喜歡.我用過最好的IDE是微軟的VS,對(duì)于我這個(gè)菜鳥,開始也只能用用IDE了.我是照著友善的手冊(cè)移植的,大家可以參考一下.
開發(fā)板里已經(jīng)裝上了linux的內(nèi)核2.6.32.2,還有Qtopia2.2.0,簡(jiǎn)單說就是內(nèi)核和根文件都已經(jīng)準(zhǔn)備好了,然后我去Nokia官網(wǎng)下載了QT4.7的ARM版本qt-everywhere-opensource-src-4.7.3.tar.gz,也就是網(wǎng)上常說的QTE版本,一開始我就是被誤導(dǎo)了,這個(gè)說法很多,中文就是這么麻煩,一件事情可以有很多說法.接著上傳到Fedor的/opt目錄,這個(gè)目錄隨便啊,我沒有說指定的目錄哦,如果有特殊的目錄,我會(huì)指明.因?yàn)槲野押芏喙こ潭急4娴竭@個(gè)目錄,而且在開發(fā)板上也是這個(gè)目錄,為了避免麻煩,所以就這個(gè)目錄吧.
這里介紹個(gè)好工具給大家,調(diào)試必備工具WinSCP,免費(fèi)開源,自己去官網(wǎng)下載.利用SSH協(xié)議.
傳好以后就是解壓咯,這個(gè)大家會(huì)的,tar -xvzf .........tar.gz 好長(zhǎng)的名字,記得用Tab鍵自動(dòng)生成啊
然后就是交叉編譯了,這個(gè)交叉編譯環(huán)境之前也有了,先配置一下
# echo yes | ./configure -prefix /opt/Qt4.7 -opensource -embedded arm -xplatform qws/linux-arm-g++ -no-webkit -qt-libtiff -qt-libmng -qt-mouse-tslib -qt-mouse-pc -no-mouse-linuxtp -no-neon
這個(gè)配置方式?jīng)]錯(cuò),參考友善手冊(cè) -embedded arm: 表示將編譯針對(duì) arm 平臺(tái)的 embedded 版本; -xplatform qws/linux-arm-g++: 表示使用 arm-linux 交叉編譯器進(jìn)行編譯; -qt-mouse-tslib: 表示將使用 tslib 來驅(qū)動(dòng)觸摸屏; -prefix /opt/Qt4.7: 表示 Qt4.7 最終的安裝路徑是 /opt/Qt4.7 下載到開發(fā)板時(shí),也需要把 Qt4.7 放在這個(gè)路徑上
然后執(zhí)行編譯和安裝
# make && make install
然后出現(xiàn)/opt/Qt4.7,這個(gè)編譯過程很長(zhǎng),不是一個(gè)然后就OK的,我估算有大于1個(gè)小時(shí)之久,所以大家耐心等待,嘿嘿,其實(shí)大家可以搞一個(gè)編譯好的Qt4.7,不需要自己編譯,除非要裁剪或者修改,如果有需要,可以Q我.
接著打包成壓縮文件,目的就是方便傳到開發(fā)板上,文件很多,難道一個(gè)一個(gè)傳?很慢的
tar -cvzf qt4.7.tgz Qt4.7
找個(gè)U盤,拷貝這個(gè)qt4.7.tgz 然后再拷到開發(fā)板上,并且解壓到/opt/下
因?yàn)橹伴_發(fā)板上運(yùn)行的是Qtopia2.2.0,系統(tǒng)環(huán)境設(shè)置是它的,現(xiàn)在要設(shè)置成qt4.7的先把Qtopia2.2.0撤下來,就是進(jìn)入Terminate Server
具體操作設(shè)置->關(guān)機(jī)
還是然后就是要設(shè)置Qt4.7的環(huán)境,搞一個(gè)腳本setqt4env,具體內(nèi)容,這個(gè)不是友善手冊(cè)上的哦,大家可以對(duì)照一下,看看我改了什么,也許不全對(duì)
#!/bin/sh
true ${TSLIB_TSDEVICE:=/dev/input/event0} TSLIB_CONFFILE=/usr/local/etc/ts.conf export TSLIB_TSDEVICE export TSLIB_CONFFILE export TSLIB_PLUGINDIR=/usr/local/lib/ts export TSLIB_CALIBFILE=/etc/pointercal export QWS_DISPLAY=:1 export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH export PATH=/bin:/sbin:/usr/bin/:/usr/sbin:/usr/local/bin if [ -c /dev/input/event0 ]; then export QWS_MOUSE_PROTO="Tslib:/dev/input/event0 MouseMan:/dev/input/mice" if [ ! -s /etc/pointercal ] ; then rm /etc/pointercal /usr/bin/ts_calibrate fi else export QWS_MOUSE_PROTO="MouseMan:/dev/input/mice" fi export QWS_KEYBOARD=TTY:/dev/tty1 export HOME=/root
保存后,修改執(zhí)行權(quán)限chmod +x setqt4env,再執(zhí)行,這里執(zhí)行方式有點(diǎn)怪,是這樣的. setqt4env,點(diǎn)和腳本間有個(gè)空格,說明腳本中導(dǎo)出的環(huán)境變量將應(yīng)用到當(dāng)前的shell會(huì)話中
哦.我把這個(gè)setqt4env放到/bin目錄下了,目的可想而知,哈哈
這下你可以執(zhí)行你精心設(shè)計(jì)并且仿真沒錯(cuò),以及交叉編譯也沒錯(cuò)的程序了,當(dāng)然如果你沒有,那就玩它的Demo把,Qt4.7目錄下有好多Demo呢,做的不錯(cuò),至少對(duì)于我這個(gè)菜鳥來說.
打開程序后(記得加參數(shù)-qws),你的觸摸屏和鼠標(biāo)都可以使用,但是今天還有一個(gè)問題,就是設(shè)計(jì)的窗體上的大小,包括控件和字體的大小都不是預(yù)期的,很小,怎么回事,待解決,或許和屏幕分辨率有關(guān)
好吧,問題找到了,要對(duì)DPI進(jìn)行設(shè)置,或許編譯Qt4的時(shí)候有設(shè)置,但是我才懶的再去編譯,就通過腳本再去設(shè)置一下吧
剛才的setqt4env腳本,里面加上
export QWS_DISPLAY="LinuxFB:mmWidth95:0"
export QWS_SIZE="240*320"
搞定! |
|