分享

成功移植Qt4.7到2440,失败是被误导

 昵称9417682 2012-03-28

转自 http://qz.qq.com/252543352/blog?uin=252543352&vin=0&blogid=1307893503

成功移植Qt4.7到2440,失败是被误导

查看日志列表 发表于
其实Qtopia2.2.0是现成的,图形界面也有,看起来还挺漂亮的,网上很多源码也是基于Qtopia2.2.0的,为什么我要移植Qt4.7呢?我毛病呢...

都是因为我发现Nokia推出的Qt4.7的SDK中的Creator非常好用,我很喜欢.我用过最好的IDE是微软的VS,对于我这个菜鸟,开始也只能用用IDE了.我是照着友善的手册移植的,大家可以参考一下.

开发板里已经装上了linux的内核2.6.32.2,还有Qtopia2.2.0,简单说就是内核和根文件都已经准备好了,然后我去Nokia官网下载了QT4.7的ARM版本qt-everywhere-opensource-src-4.7.3.tar.gz,也就是网上常说的QTE版本,一开始我就是被误导了,这个说法很多,中文就是这么麻烦,一件事情可以有很多说法.接着上传到Fedor的/opt目录,这个目录随便啊,我没有说指定的目录哦,如果有特殊的目录,我会指明.因为我把很多工程都保存到这个目录,而且在开发板上也是这个目录,为了避免麻烦,所以就这个目录吧.

这里介绍个好工具给大家,调试必备工具WinSCP,免费开源,自己去官网下载.利用SSH协议.

传好以后就是解压咯,这个大家会的,tar -xvzf .........tar.gz 好长的名字,记得用Tab键自动生成啊

然后就是交叉编译了,这个交叉编译环境之前也有了,先配置一下

# 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

这个配置方式没错,参考友善手册

-embedded arm: 表示将编译针对 arm 平台的 embedded 版本;

-xplatform qws/linux-arm-g++: 表示使用 arm-linux 交叉编译器进行编译;

-qt-mouse-tslib: 表示将使用 tslib 来驱动触摸屏;

-prefix /opt/Qt4.7: 表示 Qt4.7 最终的安装路径是 /opt/Qt4.7 下载到开发板时,也需要把 Qt4.7 放在这个路径上

然后执行编译和安装

# make && make install

然后出现/opt/Qt4.7,这个编译过程很长,不是一个然后就OK的,我估算有大于1个小时之久,所以大家耐心等待,嘿嘿,其实大家可以搞一个编译好的Qt4.7,不需要自己编译,除非要裁剪或者修改,如果有需要,可以Q我.

接着打包成压缩文件,目的就是方便传到开发板上,文件很多,难道一个一个传?很慢的

tar -cvzf qt4.7.tgz Qt4.7

找个U盘,拷贝这个qt4.7.tgz 然后再拷到开发板上,并且解压到/opt/下

因为之前开发板上运行的是Qtopia2.2.0,系统环境设置是它的,现在要设置成qt4.7的先把Qtopia2.2.0撤下来,就是进入Terminate Server

具体操作设置->关机

还是然后就是要设置Qt4.7的环境,搞一个脚本setqt4env,具体内容,这个不是友善手册上的哦,大家可以对照一下,看看我改了什么,也许不全对

#!/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

保存后,修改执行权限chmod +x setqt4env,再执行,这里执行方式有点怪,是这样的. setqt4env,点和脚本间有个空格,说明脚本中导出的环境变量将应用到当前的shell会话中

哦.我把这个setqt4env放到/bin目录下了,目的可想而知,哈哈

这下你可以执行你精心设计并且仿真没错,以及交叉编译也没错的程序了,当然如果你没有,那就玩它的Demo把,Qt4.7目录下有好多Demo呢,做的不错,至少对于我这个菜鸟来说.

打开程序后(记得加参数-qws),你的触摸屏和鼠标都可以使用,但是今天还有一个问题,就是设计的窗体上的大小,包括控件和字体的大小都不是预期的,很小,怎么回事,待解决,或许和屏幕分辨率有关

好吧,问题找到了,要对DPI进行设置,或许编译Qt4的时候有设置,但是我才懒的再去编译,就通过脚本再去设置一下吧

刚才的setqt4env脚本,里面加上

export QWS_DISPLAY="LinuxFB:mmWidth95:0"

export QWS_SIZE="240*320"

搞定!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多