3.2.2 编译PC版本的 qtopia2.2.0;3.2.3 编译mini6410版本的 qtopia2.2.0;

3.2.2 编译PC版本的 qtopia2.2.0
3.2.2.1 初次编译
在linux终端上输入以下命令开始编译Qtopia2.2.0的x86版本,编译分为两个部分,configure和make:
# cd /opt/qtopia-free-2.2.0/
# echo yes | ./configure -qte '-embedded -no-xft -qconfig qpe -depths 16,32 -system-jpeg -gif' -qpe '-edition pda -displaysize 240x320' -qt2 '-no-opengl -no-xft' -dqt '-no-xft -thread'
# make
make执行到半途会出现编译错误,如下所示:
/opt/qtopia-free-2.2.0/qt2/include/qwindowsystem_qws.h:214: 警告:此声明中的 typedef 被忽略
/opt/qtopia-free-2.2.0/qt2/include/qwindowsystem_qws.h:230: 错误:‘QWSInputMethod’未声明
/opt/qtopia-free-2.2.0/qt2/include/qwindowsystem_qws.h:237: 错误:‘QWSGestureMethod’未声明
make[1]: *** [allmoc.o] 错误 1
这是由于Qtopia2.2.0是几年前的产品,而Fedora9自带的gcc 4.3编译器较新已经不支持旧的一些C/C++语法特性导致的,因此需要修改源代码才能顺利编译通过,由于错误的地方太多,这里就
第 - 15 - 页
不一一展示如何修改了,我用diff命令将修改的部分制作成patch, 读者可以直接通打patch的方式来修复这些错误,如果你想了解patch到底修复了哪些错误,可以直接用文本编辑器查看patch文件来了解。
3.2.2.2 通过打patch来修复编译错误
从光盘上找到文件 qtopia2.2.0.friendlyarm.patch(位于光盘A的“开发文档和教程\01 Qt4和Qtopia编程开发指南\源代码\第三章\3-2”目录下), 然后复制到 /opt 下,输入以下命令,将patch应用原始的 qtopia 2.2.0
# cd /opt/qtopia-free-2.2.0
# patch -p1 < /opt/qtopia2.2.0.friendlyarm.patch
打完patch后,输入以下命令重新编译:
# echo yes | ./configure -qte '-embedded -no-xft -qconfig qpe -depths 16,32 -system-jpeg -gif' -qpe '-edition pda -displaysize 240x320' -qt2 '-no-opengl -no-xft' -dqt '-no-xft -thread'
# make
# make install
configure配置参数的含义通过命令 ./configure --help 来了解其含义。
3.2.2.3 在PC上运行qtopia2.2.0
要运行qtopia2.2.0,首先需要运行Qtopia模拟器qvfb
, 还需要设置QTDIR等一些环境变量,为了方便在PC上运行qtopia2.2.0, 我编写了一个qtopia2.2.0运行脚本run,run编写如下所示:
# cd /opt/qtopia-free-2.2.0
# vi run
在vi中输入以下内容保存:
#!/bin/sh
第 - 16 - 页
./qt2/bin/qvfb -width 480 -height 272 -depth 16 &
cd qtopia/image
mkdir root 2>/dev/null || true
export HOME=$PWD/root
cd opt/Qtopia
export PATH=$PWD/bin:$PATH
export LD_LIBRARY_PATH=$PWD/lib:$LD_LIBARAY_PATH
export QTDIR=$PWD
export QPEDIR=$PWD
export KDEDIR=$PWD/../kde
sleep 3
qpe
然后执行以下命令运行qtopia模拟器:
# chmod +x ./run
# ./run
qtopia2.2.0效果如下图所示:
下面的章节将介绍如何编译在mini6410上运行的qtopia2.2.0。
第 - 17 - 页
3.2.3 编译mini6410版本的 qtopia2.2.0
3.2.3.1 交叉编译 qtopia 2.2.0

为了避免与x86版本的qtopia 2.2.0 产出冲突,我们创建一个新目录mini6410来存放arm版本的qtopia, 如下所示:
# mkdir /opt/mini6410
然后执行以下命令将 qtopia2.2.0 的源代码上述目录上解压并打上patch:
# cd /opt/mini6410
# tar xvzf /opt/qtopia-free-src-2.2.0.tar.gz
# cd /opt/mini6410/qtopia-free-2.2.0
# patch -p1 < /opt/qtopia2.2.0.friendlyarm.patch
接着执行编译前的配置:
# echo yes | ./configure -qte '-embedded -no-xft -qconfig qpe -depths 16,32 -system-jpeg -qt-zlib -qt-libpng -gif -no-g++-exceptions -no-qvfb -xplatform linux-arm-g++ -tslib' -qpe '-edition pda -displaysize 480x272 -xplatform linux-arm-g++ -luuid' -qt2 '-no-opengl -no-xft' -dqt '-no-xft -thread'
在上面configure参数中,我们指定使用了 tslib 来驱动触摸屏,在友善之臂的linux交叉编译器中,已经包含了 tslib 的库文件和头文件,因此这里不需要指定 tslib 的库文件和头文件路径。
其它的配置参数的含义通过命令 ./configure --help 来了解其含义。
最后执行以下命令进行编译及安装:
# make
# make install
编译成功后,编译生成的image存放在/opt/mini6410/qtopia-free-2.2.0/qtopia/image目录下。
3.2.3.2 在mini6410开发板上运行 qtopia2.2.0
先确认你的mini6410已经参考用户手册烧写了最新版本的linux images。然后执行以下命令,将刚刚我们编译产出的 image 打包,然后拷贝到你的sd卡上。
第 - 18 - 页
# cd /opt/mini6410/qtopia-free-2.2.0/qtopia/image
# tar cvzf opt.tgz opt
然后打开minicom, 开启mini6410开发板,在minicom输入(我用@#来表示minicom上的提示符,用#表示PC上的终端提示符,在输入时注意不用输入它们):
@# killall qpe qss quicklauncher
@# rm /opt -rf
@# tar xvzf /sdcard/opt.tgz
创建一个脚本run_my_qtopia,用于运行我们自已编译的Qtopia:
@# vi /bin/run_my_qtopia
在run_my_qtopia中输入如下内容:
#!/bin/sh
export TSLIB_TSDEVICE=/dev/touchscreen-1wire
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
export QTDIR=/opt/Qtopia
export QPEDIR=/opt/Qtopia
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:/usr/local/lib:$LD_LIBRARY_PATH
export QWS_MOUSE_PROTO="TPanel:/dev/input/mice"
export QWS_KEYBOARD=TTY:/dev/tty1
export HOME=/root
exec $QPEDIR/bin/qpe
上述的run_my_qtopia运行脚本说明如下:
a) 首先,我们需要根据我们使用的触摸屏,配置tslib的参数,其中,TSLIB_TSDEVICE环境变量指向触摸屏的设备文件,需要根据你所用的触摸屏设置成以下的值之一:
一线触摸屏使用:TSLIB_TSDEVICE=/dev/touchscreen-1wire
ADC触摸屏使用:TSLIB_TSDEVICE=/dev/touchscreen
串口触摸屏使用:TSLIB_TSDEVICE=/dev/ttySAC3
(注:2010-11-21以后购买的开发板都是用一线触摸屏的,如果在这之前购买的,则就有可能是ADC或者串口触摸屏)
第 - 19 - 页
b) 然后,配置Qtopia的环境变量 QTDIR, QPEDIR 指向Qtopia Image的路径,配置QWS_MOUSE_PROTO指向触摸屏设备, QWS_KEYBOARD指向开发板上用于Hard Key的tty设备。
c) 最后,执行 qpe 可执行文件,启动Qtopia。
输入以下命令为run_my_qtopia设置可执行权限,然后修改 /etc/init.d/rcS文件,让系统启动时,自动启动我们自已编译的Qtopia:
@# chmod +x /bin/run_my_qtopia
@# vi /etc/init.d/rcS
把文件中的:
/bin/qtopia &
改成:
/bin/run_my_qtopia &

然后重启开发板,将开机自动启动我们自已build的Qtopia2.2.0。

"D:\ARM11\Tiny6410-A\开发文档和教程\01 Qt4和Qtopia编程开发指南\Mini6410 Qt4和Qtopia编程开发指南-20110112.pdf"P14

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值