OK6410之Qt移植全过程记录

       使用OK6410开发板移植过Qt程序很多次了,也碰到了非常多问题,其中大部分在网上都能找到解决办法,剩下的一部分在自己的摸索下也能够解决,还有个别问题试了很久也没找到办法,只能暂时跳过。虽然现在对Qt移植的过程挺熟悉的,但时间久了还是容易忘记,放在博客上面不仅在需要的时候能够马上回顾,也希望能够给需要的人提供一点帮助。

        开发板:OK6410-A 2G

        交叉编译环境:Ubuntu 12.04,arm-linux-gcc 4.4.1

        Qt版本:Qt 4.8.4


        有些步骤在飞凌开发板的资料中,或者网上有详细的步骤,难以一一细说。另外,Ubuntu开发的时候我使用的是root权限,虽然有安全问题,但是确实简便了很多。设置root登录的解决办法在飞凌资料中的Linux手册上有。网上都能下载得到飞凌的资料,如果找不到的可以找我拿。


第一、安装arm-linux-gcc 4.4.1(步骤在飞凌资料中的Linux手册上有)


第二、编译tslib,并将它放到开发板的/usr/local目录下(步骤在飞凌资料中的Linux手册上有)


第三、安装qt4.8.4,配置目标为arm平台,然后安装。

参考:http://www.cnblogs.com/emouse/archive/2013/01/29/2881311.html



第四、将安装好的Qt4.8.4的库文件等放到开发板的/opt/Qt4.8.4目录下,之前在arm下使用Qt4.8.4的时候遇到问题,无法解决,然后直接使用ok6410开发板官方提供的Qt4.7.1库文件。(Qt4.7.1这些资料在飞凌提供的资料中都有,可以选择自己编译,或者直接利用飞凌已经编译好的。Qt4.8.4需要到官网上下载,第三步骤中有说到)


第五、交叉编译Qt程序:

(一)、利用/usr/local/Trolltech/QtEmbedded-4.8.4-arm/bin/qmake命令qmake,生成Makefile文件(路径是安装时选择的路径,也就是qmake所在路径);

(二)、修改Makefile文件,添加“-fno-rtti”:

CFLAGS = -fno-rtti -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)
CXXFLAGS = -fno-rtti -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)

(三)、执行make命令,生成能够在arm下执行的程序;

(四)、执行make clean命令,清除多余的文件。执行chmod 777 *,赋予执行文件最高权限。



第六、移植Qt程序到/opt/xxx目录,其中xxx为自己创建的文件夹,Qt程序放在目录下。



第七、添加环境变量,设置成开机启动:

        
(一)、在/bin下创建一个setqt4env脚本文件,具体内容,注意修改成你自己的路径,比如可执行文件readCard放在/opt/readCard目录下。另外还有触摸屏的设备号event2,
tslib的路径,qt-4.7.1路径等都有可能是不一样的:

#!/bin/sh

export TSLIB_ROOT=/usr/local/tslib
export TSLIB_TSDEVICE=/dev/input/event2
export TSLIB_TSEVENTTYPE=H3600
export TSLIB_CONFFILE=/usr/local/tslib/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/local/tslib/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export QTDIR=/opt/qt-4.7.1/
export QT_QWS_FONTDIR=/opt/qt-4.7.1/lib/fonts

export LD_LIBRARY_PATH=$QTDIR/plugins/qtopialmigrate/:$QTDIR/plugins/imageformats/:$QTDIR/lib:/usr/local/tslib/lib:$LD_LIBRARY_PATH
export PATH=/bin:/sbin:/usr/bin/:/usr/sbin:/usr/local/tslib/bin


if [ -c /dev/input/event2 ]; then  
  
        echo "touch..."  
        export QWS_MOUSE_PROTO='Tslib:/dev/input/event2'  
       
        if [ ! -e /etc/pointercal ]; then  
             /bin/calibrate  
        fi  
         
        if [ -e /etc/pointercal -a ! -s /etc/pointercal ] ; then  
                rm /etc/pointercal  
                /bin/calibrate  
        fi  
else  
        echo "mouse..."  
        export QWS_MOUSE_PROTO="MouseMan:/dev/input/mice"  
        >/etc/pointercal  
fi 

export QWS_KEYBOARD=TTY:/dev/tty1



FB_SIZE=$(cat /sys/class/graphics/fb0/virtual_size)

#export QWS_DISPLAY="LinuxFb:mmWidth76:mmHeight44:1"
case "$FB_SIZE" in
800,480)
export QWS_DISPLAY="LinuxFb:mmWidth91:mmHeight53:1"
;;
480,272)
export QWS_DISPLAY="LinuxFb:mmWidth76:mmHeight44:1"
;;
*)
export QWS_DISPLAY="LinuxFb:mmWidth91:mmHeight53:1"
;;
esac
#export QWS_DISPLAY=:1


cd /opt/readCard
./readCard -qws 
(二)、进入/etc/init.d/rcS,最后一行修改成:/bin/setqt4env &


第八、生成文件系统

(一)、将mkyaffs2image-nand2g工具放到文件系统所在的并列目录下;

(二)、执行./mkyaffs2image-nand2g FileSystem-Yaffs2 rootfs.yaffs2命令,将FileSystem-Yaffs2制作成文件系统rootfs.yaffs2;

(三)、将uboot、zImage、rootfs.yaffs2烧录到开发板中就好,烧写的方法比较多。


另外,在开发的过程中难免需要用到NFS挂载,参考之前的博客:Ubuntu12.04 NFS安装与OK6410


以上这些内容是自己在开发过程中的笔记汇集而来的,难免有些错误,请多见谅。


  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值