首页资源分类嵌入式系统 > OK6410 QT移植百科全书

OK6410 QT移植百科全书

已有 445117个资源

下载专区

上传者其他资源

    文档信息举报收藏

    标    签:OK6410QT移植百科全书

    分    享:

    文档简介

     OK6410 QT移植百科全书

    文档预览

    OK6410 QT 移植百科全书 飞凌嵌入式 致力于打造一流的嵌入式开发平台 1 目录 第一章 前言................................................................................................................................................. 5 第二章 QTOPIA 和 QT/E 简介.................................................................................................................. 6 2-1 Qtopia 简介.....................................................................................................................................6 2-2 Qt/Embedded 简介...........................................................................................................................6 第三章 QTOPIA4.4.3 和 TSLIB 1.4 的编译.......................................................................................... 7 3-1 tslib 的编译和配置.......................................................................................................................7 3-1-1 tslib 编译方法......................................................................................................................... 7 3-1-2 配置 tslib................................................................................................................................. 8 3-2 编译 qt-extended-4.4.3.............................................................................................................10 第四章 QTOPIA4.4.3 的使用................................................................................................................ 15 4-1 为 Qtopia 4.4.3 的运行准备网络文件系统.............................................................................. 15 4-2 启动 Linux,运行 Qtopia 4.4.3................................................................................................17 第五章 QTOPIA 2.2.0 编译说明....................................................................................................... 23 5-1 编译前的准备工作........................................................................................................................24 5-2 编译第三方库................................................................................................................................26 5-2-1 交叉编译 jpeg 库.................................................................................................................. 26 5-2-2 交叉编译 e2fsprogs-1.40.2.............................................................................................. 28 5-2-3 交叉编译 libpng 库............................................................................................................... 29 5-2-4 交叉编译 zlib...................................................................................................................... 29 5-3 qtopia-free-forlinx-2.2.0 的编译....................................................................................................30 5-3-1 qtopia-free-forlinx-2.2.0 源码编译方法.....................................................................30 5-3-2 关于一些 bug 的处理........................................................................................................... 31 第六章 QTOPIA2.2.0 的使用................................................................................................................ 50 第七章 QTOPIA2.2.0 的本地化............................................................................................................ 54 7-1 安装 linguist-qt4 软件..............................................................................................................54 7-2 汉化界面........................................................................................................................................55 7-3 运行 Qtopia...................................................................................................................................59 第八章 QT/E4.7 的编译和使用说明.................................................................................................... 62 8-1 Qt/E4.7 的编译.............................................................................................................................62 8-2 Qt/E4.7 的使用.............................................................................................................................64 第九章 使用集成开发环境开发 QT 应用程序..........................................................................................67 2 9-1 建立 QtCreator 开发环境............................................................................................................67 9-2 QtCreator 环境制作属于您的 HelloWorld................................................................................ 69 9-3 运行您亲手制作的 HelloWorld...................................................................................................79 第十章 附录............................................................................................................................................... 80 10-1 QT 资料文件说明...................................................................................................................... 80 3 修订版本 V1.0 较上一版本所更新内容 第一版本 1、飞凌嵌入式开发平台手册在不断更新完善中,请用户及时下 载相应平台的最新使用手册。下载地址: http://www.forlinx.com/Download.htm 注册信息无误的情况下,注册 24 小时内开通下载权限。建议开 发板到手后及时注册。 2、在您的使用过程中如果遇到相关技术问题,欢迎访问飞凌官 方论坛寻求答案,或者发帖求援。论坛地址: http://bbs.witech.com.cn/.除此之外还可以加入飞凌 QQ 讨论群, 与其他使用者进行沟通交流。QQ 群相关信息请访问飞凌官方网站进 行查询。网址:http://www.forlinx.com 3、飞凌技术服务热线:400 699 6866 4、本手册版权归属飞凌嵌入式有限公司所有,并保留一切权利。 任何单位及个人不得擅自摘录本手册部分或全部内容。 4 第一章 前言 一直以来,QT 的移植作为嵌入式学习的一大难题, 始终困扰着初入此行的工程师。这方面 的资料虽然不少,但仍不够系统和详细,使得学习起来相当吃力。初学者常常因为一个细节没 有注意到而花费过长的时间;同时,QT 本身比较庞大,涉及的知识点较多,这也给学习带来很 大的障碍。本手册由飞凌一线工程师撰写,并经过反复测试和修改,力图使广大用户迅速掌握 QT 的移植方法。需要说明的是,这里详细介绍了 QT 移植方面的知识,关于应用开发方面的内容 将单独作为一个教程来讲解。 飞凌嵌入式为您带来全新的根文件系统、Qtopia2.2、Qtopia4.4.3、Qt/E4.7 的编译方法以 及源码、tslib 最新版本——tslib1.4。 为了配合讲解,首先要说明一下 1.本次发布 Qtopia4.4.3+Qtopia2.2.0 +Qt/E4.7 需要更新内核文件。新的内核 nandflash 的 mtdblock3 分区有 500MB,使文件系统中能存放 Qtopia 桌面环境及应用程序。为了验证自己 编译的 QT 是否可以运行,您要学会使用开发板启动 Linux 并挂载 nfs(网络文件系统)。nfs 启 动 linux 在 OK6410 的 Linux 使用手册中有详细的讲解。 2. Qtopia2.2.0 是 PDA 版本,一个比较传统的版本。很早之前,飞凌推出了 Qtopia2.2.0 在 Redhat Linux 9 移植方法,许多朋友一直在使用 Qtopia2.2.0。为此,我们拿出时间来,在 Ubuntu Linux9.10 环境中移植 Qtopia2.2.0,为飞凌的老朋友和新朋友送上了 Qtopia2.2.0 全 新环境的编译方法。 飞凌嵌入式的 Qtopia4.4.3 是诺基亚发布最终的手机桌面版本,也是目前嵌入式开发平台 上很流行,具有超酷的桌面环境。 由于 Qt/E4.7.0 的库存在 bug,而 Qt/E4.7.1 修复了这些 bug,所以此次提供的版本是 Qt/E4.7.1 库。为了便于描述,以下将 Qt/E4.7.1 简称 Qt/E4.7。 5 第二章 Qtopia 和 Qt/E 简介 2-1 Qtopia 简介 Qtopia 是 Trolltech 公司为采用嵌入式 Linux 操作系统的消费类电子设备而开发的综合应 用平台, Qtopia 包含完整的应用层、灵活的用户界面、窗口操作系统、应用程序启动程序以及 开发框架。 Qtopia 的特性如下 所示: ●窗口操作系统 ●同步框架 ●开发环境 ●本地化支持 ●游戏和多媒体 ●PIM 应用程序 ●输入法 ●个性化选项 ●工作辅助应用程序 ●Internet 应用程序 ●Java 集成 ●无线支持 Trolltech 提供三大 Qtopia 版本:Qtopia 手机版 Qtopia PDA 版和 Qtopia 消费电子产 品平台,2008 年 Trolltech 公司被诺基亚收购。 2-2 Qt/Embedded 简介 Qt/Embedded 是一个多平台的 C++图形用户界面开发工具包,它注重于能给用户提供精美的 图形界面所需的所有元素,而且其开发过程是基于面向对象的编程思想,并且 Qt/Embedded 支 持真正的组件编程。 6 第三章 Qtopia4.4.3 和 Tslib 1.4 的编译 PC 环境:Ubuntu9.10 开发板:OK6410 和 TE6410 交叉编译器:arm-linux-gcc-4.4.1 3-1 tslib 的编译和配置 编译和运行 qt-extended-4.4.3(Qtopia4),需要 tslib 库,该库是触摸屏校准时需要的库 文件,如对触摸屏的数据进行过滤、去抖动等,QT 的库会调用 tslib 的库文件 3-1-1 tslib 编译方法 步骤 1. 安装 autoconf、automake、libtool 包 在 Ubuntu 命令行中分别执行以下三个升级命令。 #sudo apt-get install autoconf #sudo apt-get install automake #sudo apt-get install libtool 步骤 2. 进入 tslib 目录 #cd tslib/ 步骤 3. 设置环境变量,指向交叉编译器路径 #export PATH=/usr/local/arm/4.4.1/bin:$PATH #export TOOLCHAIN=/usr/local/arm/4.4.1 #export TB_CC_PREFIX=arm-linux#export PKG_CONFIG_PREFIX=$TOOLCHAIN/arm-linux 步骤 4. 运行脚本 #./autogen.sh #echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache 步骤 5. 配置安装参数 #./configure --host=arm-linux --cache-file=arm-linux.cache --enable-inputapi=no PLUGIN_DIR=/usr/local/arm/tslib/plugins -prefix=/usr/local/arm/tslib/build -host=arm-linux --cache-file=arm-linux.cache 2>&1 | tee conf_log 步骤 6. 编译 #make 2>&1 | tee make_log #make install 7 3-1-2 配置 tslib 步骤 1. 编译后会出现 bulid 目录。进入 build 目录,编辑‘ts.conf’文件 #cd build/etc #gedit ts.conf 注意:打开文件后如下图所示,编辑该文件,去掉‘module_raw input’前面的#号和空格。 如果‘module_raw input’前面留有空格的话,运行测试软件时会提示 ‘Segmentation fault’。 步骤 2. 然后检查主机目录 ‘/usr/local/arm/’下面是否已经有了‘tslib’文件夹 ,如 果有的话,请修改配置文件‘ts.conf’,如下图所示。 如果主机目录 ‘/usr/local/arm/’下没有‘tslib’文件夹,请将前面编译好的‘build’ 文件夹拷贝到‘/usr/local/arm’目录下,然后把‘build’改名为‘tslib’。另外需要把这个 ‘ tslib ’ 文 件 夹 放 到 网 络 文 件 系 统 目 录 中 的 ‘ /usr/local ’ 下 面 , 我 的 是 ‘/forlinux/root/usr/local/’。最后,进入到开发板的‘/usr/local’下面,如图: 8 进入到 tslib 目录下面: Qtopia 4.4.3 运行时会使用这里的文件。 9 3-2 编译 qt-extended-4.4.3 编译前需要注意的是: 1 编译 Qtopia 时确保您的 Ubuntu9.10 环境中安装了 GNU g++编译器,在 Qtopia 编译过程 中会用它来编译一些在 PC 上运行的工具软件。 2 注意您的 Ubuntu 中要安装 X11 的 SDK 库,Qtopia 编译过程中需要使用 X11 SDK 里的一些 头文件,使用以下命令即可安装需要的文件: #apt-get install libx11-dev libxext-dev libxtst-dev 3 如果使用虚拟机编译源码,请不要把源码放在共享的目录中来编译,否则会编译出错。 步骤 1. 新建目录‘/witech’。 #mkdir /witech 然后修改‘/witech’的使用权限: #chmod 777 /witech –R 步骤 2. 把飞凌提供的‘ARM-qt-extended-opensource-src-4.4.3.tar.gz’压缩包(该文 件位于发布包中)拷贝到‘/witech’路径下,并解压: #tar zxvf ARM-qt-extended-opensource-src-4.4.3.tar.gz 步骤 3. 进入‘/witech’ #cd /witech 步骤 4. 可以看到编译脚本 build,直接执行编译脚本 build 即可开始编译 #./build 执行后,将会生成以下几个文件及文件夹。 10 编译过程如下图所示。Qt/E 源码包很大,所以需要较长时间,一般是三到四个小时。 11 步骤 5. 编译完成后如下图所示: 12 这时,在 ‘builddir’目录下会生成 ‘SDK’和‘Image’ ,‘SDK’是在开发板上开发 Qt 13 图形界面软件的 API 库,另外还有国际化工具等工具软件。而‘Image’目录下的文件,就是我 们期盼已久的 Qtopia4.4.3 可执行文件。 14 第四章 Qtopia4.4.3 的使用 首先,您需要掌握如何从 NFS 启动开发板的 linux,以便于在日后调试 Qt/E。如果对如何 通过 NFS 启动开发板上的 linux 不是很熟悉,可以参考飞凌 Linux 使用手册。这里,假设已经 把 NFS 启动 linux 的环境搭建好。并使用本次提供的文件系统包作为 NFS 的挂载目录。 4-1 为 Qtopia 4.4.3 的运行准备网络文件系统 步骤 1. 本章的演示实验 NFS 挂载的目录是‘/forlinx/root’。将飞凌提供的 root.tar.gz 在 PC 的‘/forlinx/root’目录下解压。然后删除 root 目录中解压出来的 Qtopia 4.4.3。最后 将前面编译出来的‘image’目录整体拷贝到‘/forlinx/root/opt’中: #cp /witech/arm-qt-extended-4.4.3/builddir/image /forlinx/root/opt 步骤 2. 然后将 image 目录改名为 Qtopia4.4.3 #mv image Qtopia4.4.3 完成以上的操作后,如下图: 15 回到 Ubuntu 的图形界面,并进入 Qtopia4.4.3 目录: 下面介绍一下每个目录的含义: bin: 用于存放 Qtopia 的应用程序,如 clock 软件、Qtopia 自带的应用软件 、qpe(Qt/E 的桌面环境)可执行文件等都在这里。 etc: Qtopia 的配置文件,您可以修改这里面的文件来定制 Qtopia 的运行风格,比如字体 图标变大,界面改变主题等。 help:里面放着关于 Qt/Qtopia 的帮助页面,是学习研究 Qt、Qtopia 的重要资料,可以用 浏览器打开观看。 i18n:Qt/Qtopia 的国际化部分,也就是对多语种的支持。 lib:库文件,Qt/Qtopia 运行需要的库文件,含有编译 Qt 形成的库文件以及编译 Qtopia 生成的库文件。 pics:图片文件夹,Qt/Qtopia 运行时需要的图片文件。 sounds:声音文件夹, Qt/Qtopia 运行时需要的声音文件。 plugins:Qtopia 的插件,插件可以理解为完成一定功能的库文件,如 libqjpeg.so 完成 JPEG 图像的处理工作。 qt_plugins:qt 的插件。 services:服务模块,用来完成特定的服务功能。 步骤 4. 接下来,修改 rcS 启动文件,让 Linux 启动后直接运行 Qtopia4.4.3:打开文件 ‘/forlinx/root/etc/init.d/rcS’,将最后一行修改为 ./bin/qtopia4& 16 4-2 启动 Linux,运行 Qtopia 4.4.3 经过以上的操作后,终于可以执行酷酷的 Qtopia4.4.3 的桌面系统了。启动开发板 NFS 的 Linux,启动完成后,使用 ‘ps’命令查看一下进程列表信息,如下图,说明已成功的运行 了 Qtopia4。 显示屏显示 Otopia4.4.3 的效果如下: 17 使 用 触 摸 笔 在 液 晶 屏 上 点 击 ‘ Menu’ , 将 会 出 现 如 下 图 所 示 界 面 。 这时,您可以更改界面的主题风格,这需要通过修改里面的“设置”项,我的个人主题是 这样的: 18 这个是主界面,触摸笔触摸一下将进入软件界面,如下图所示: 在飞凌提供的文件系统中目前存在两套 Qtopia4.4.3 系统,一套是不含有鼠标光标的系统, 可以使用触摸笔进行操作;另外一套‘Qtopia4.4.3_cursor’是含有鼠标光标的,以方便用户 使 用 USB 鼠 标 。 系 统 默 认 使 用 触 摸 笔 进 行 操 作 而 不 显 示 鼠 标 光 标 , 当 然 用 户 也 可 以 把 ‘Qtopia4.4.3_cursor’修改为‘Qtopia4.4.3’,这时在使用触摸笔时,屏幕上会跟着显示鼠 标的箭头光标。 19 如果用户希望使用 USB 鼠标来操作,除了把‘Qtopia4.4.3_cursor’修改为‘Qtopia4.4.3’ 外还需要修改 ‘/bin/qtopia4’ 文件,即在该文件中添加一条语句 export QWS_MOUSE_PROTO="MouseMan:/dev/input/mice" 注意,该语句要放在‘export HOME=/root/Qtopia4Home’ 语句的上面,并紧挨着该语句。 如下图: 20 保存退出后,先在超级终端里执行‘ killall qpe’杀掉以前的 Qtopia4 程序,然后输入 命令‘qtopia4’并回车,重新执行 qtopia4 注意:触摸笔和 USB 鼠标不能同时操作界面,不过您可以使用 USB 键盘和触摸笔一起来完 成数字和文字的输入测试。 说明:Qtopia4.4.3 已经在 3.5 寸、4.3 寸、5.6 寸、7 寸、以及 VGA800×600 显示环境下 测试通过,需要说明的是,在 VGA800×600 模式下,一般不用触摸方式而使用 USB 鼠标。 另外需要说明的是,如果使用触摸笔操作屏幕没有效果,可以重新对触摸屏进行校准,飞 凌提供了校准脚本文件,在开发板的根目录 bin 下面:/bin/calibrate,如下图: 21 运行校准程序之前,要确认已经杀掉 Qtopia4 进程,可以使用命令‘killall qpe’。 运行以后在触摸屏上会看到校准的界面,根据十字光标的位置按五次即可完成校准,校准 后生成文件 ‘/etc/pointercal’,如果 pointercal 文件已经存在,则会用新校准的数据覆盖 原有的数据。如下所示是 4.3 寸屏上的显示效果: 22 第五章 Qtopia 2.2.0 编译说明 Qtopia2.2.0 是 PDA 版本的 Qt 桌面环境,本节着重介绍 Qtopia 2.2.0 的编译过程,目标平 台为 OK6410/TE6410。 在飞凌发布的资料中有两个版本的 Qtopia2.2.0,一个版本是在 PC 上 Ubuntu 系统里面运行 的版本,另一个是在开发板 OK6410/TE6410 上运行的版本,下面我们介绍一下在 Ubuntu 上运行 的版本: Qtopia 2.2.0 在 Ubuntu 上 运 行 的 版 本 , 也 就 是 模 拟 器 版 本 , 文 件 名 为 PC-qtopia-free-src-2.2.0.tar.gz,该文件位于我们的发布包目录。 解压该文件,里面包含‘一键编译脚本’和‘一键运行脚本’。我们提供的一键编译脚本让 用户轻松的编译 Qtopia2.2.0,编译通过后使用一键运行脚本,不需要您设置复杂的环境变量, 就可以把 Qtopia2.2.0 运行起来。 发布这个版本的主要目的就是方便用户在 Ubuntu Linux 上调试应用软件,您可以使用 Gdb 调 试 工 具 来 调 试 您 的 Qt 应 用 程 序 。 编 译 Qtopia2.2.0 PC 版 本 时 源 代 码 需 要 放 在 ‘ /root/yizhi/host ’ 路 径 下 面 , 如 果 该 路 径 不 存 在 , 需 要 自 己 创 建 。 解 压 PC-qtopia-free-src-2.2.0.tar.gz 文件后,就能看到一键编译脚本“build”文件,和一键运 行脚本“run”文件,您编译 PC 版本的 Qtopia 时,遇到问题的解决办法可以参考 ARM 版本的 Qtopia2 编译过程。 编译 PC 版本的 Qtopia2.2.0,我们使用的是 gcc version 4.4.1 编译器,而编译 ARM 版本 的 Qtopia2.2.0 使用的是 ARM 平台上的交叉编译器:arm-linux-gcc4.4.1,这两个编译器不是同 一个,请您注意这一点。 下面我们重点介绍一下 ARM 版本的 Qtopia2.2.0 编译过程,我们提供的 ARM 版本的源代码位于 发布包中,文件名为:ARM-qtopia-free-src-2.2.0.tar.gz PC 环境:Ubuntu9.10 开发板:OK6410 和 TE6410 交叉编译器:arm-linux-gcc4.4.1/arm-linux-gcc 4.3.2 这里使用的是 arm-linux-gcc4.4.1 编译器,如果您还没有安装 arm-linux-gcc-4.4.1 交叉 编译器,请先安装该交叉编译器到 Ubuntu 的/usr/local/arm 下面,把 arm-linux-gcc-4.4.1 压缩包解压到该目录即可完成安装。 需要注意的是: 1 编译 Qtopia 时确保您的 Ubuntu9.10 环境中安装了 GNU g++编译器,编译 Qtopia 过程中 23 需要使用这个编译器来编译一些工具,这些工具是在 PC 上运行的. 2 注意您的 Ubuntu 中要安装 X11 的 SDK 库,Qtopia 编译过程中需要使用 X11SDK 里面的一 些头文件,使用以下命令即可安装编译时需要的文件 #apt-get install libx11-dev libxext-dev libxtst-dev 3 虚拟机中的 qtopia-free-forlinx-4.4.3 文件夹不能放在与 Windows 共享的目录中,否 则会编译出错. 5-1 编译前的准备工作 编译 Qtopia2.2.0 需要第三方库的支持,飞凌发布的软件包里面含有第三方库的源代码和 编译好的库文件,您可以直接使用编译好的库文件,当然您如果对编译过程感兴趣,可以使用 飞凌提供的源代码自己来编译这些库。我们提供的第三方库的源代码和编译好的库文件位于发 布包中,文件名:3rdpart-lib-for-Qtopia2.2.0.tar.gz 注意:无论是您自己编译第三方库,还是使用飞凌编译好的,编译 Qtopia2.2.0 时需要把 第三方库的头文件和库文件放到交叉编译器的安装目录下面,虽然飞凌提供的交叉编译器里面 已经有了必要的文件,但是为了方便您的学习,很有必要使用您自己制作做的头文件和库文件 来编译 Qtopia2.2.0。 解压 3rdpart-lib-for-Qtopia2.2.0.tar.gz 压缩包,里面的 arminclude 里面存放是头文 件 , armlib 存 放 的 是 库 文 件 , 需 要 把 arminclude 中 的 文 件 放 到 交 叉 编 译 器 安 装 目 录 “arm-none-linux-gnueabi\libc\usr\include” 里面,所有的库文件放到交叉编译器安装目 录的“arm-none-linux-gnueabi\libc\usr\lib”路径下面,如下图: 24 下面我们详细介绍一下编译第三方库的方法,如果您使用飞凌提供的头文件和库文件,可 以直接跳到 “Qtopia2.2.0 编译说明” 一节 解压发布包中的 3rdpart-lib-for-Qtopia2.2.0.tar.gz 后,该目录有如下的几个文件; armlib:编译 Qtopia2.2.0 需要的库文件(飞凌制作) arminclude:编译 Qtopia2.2.0 需要的头文件(飞凌制作) jpeg-6b:一个 jpeg 图形编码解码程序库 libpng-1.2.19:一个 png 图形编码解码程序库 zlib-1.2.3:一个压缩解压程序库 e2fsprogs-1.40.2:提供 uuid 支持 libtool-2.2.tar.gz 工具包,编译 jpeg-6b 过程中需要该工具。 把 jpeg-6b,libpng-1.2.19 ,zlib-1.2.3,e2fsprogs-1.40.2 压缩包拷贝到 Ubuntu 的 root/yizhi 文件夹下面。如果您的 PC 没有 yizhi 目录,自己先建立一个,同时需要在 yizhi 文件夹下面建立 arminclude 和 armlib 文件夹,用来存放您自己制作的库文件和头文件。 25 5-2 编译第三方库 5-2-1 交叉编译 jpeg 库 解压 jpegsrc.v6b.tar.gz 到/root/yizhi # cd jpeg-6b 设置环境变量 # export PATH=/usr/local/arm/4.4.1/bin:$PATH # export CC= /usr/local/arm/4.4.1/bin/arm-linux-gcc # ./configure --enable-shared 修改生成的 Makefile 文件 CC=/usr/local/arm/4.4.1/bin/arm-linux-gcc AR=/usr/local/arm/4.4.1/bin/arm-linux-ar rc AR2=/usr/local/arm/4.4.1/bin/arm-linux-ranlib 保存 # cp jconfig.doc jconfig.h # make 26 如果出现错误,提示找不到 libtool ,如下图 解决办法: Ubuntu 上需要安装 libtool 工具,重新打开一个终端窗口,注意不要关闭编译 jpeg 时的窗 口,在新窗口中执行以下命令: #cd /root/yizhi/ #tar zxvf libtool-2.2.tar.gz #cd /root/yizhi/libtool-2.2 #./configure –prefix=/usr # make #make install 这样 libtool 工具即可完成。 Libtool 工具安装完成。切换到编译 jpeg-6b 时的窗口,然后执行如下的命令: #cp /usr/share/libtool/config/config.guess /root/yizhi/jpeg-6b #cp /usr/share/libtool/config/config.sub /root/yizhi/jpeg-6b #cd /root/yizhi/jpeg-6b #./configure –enable–shared -enable-static 修改 Makefile 文件中的 CC,AR,AR2 变量,修改为: 27 CC=/usr/local/arm/4.4.1/bin/arm-linux-gcc AR=/usr/local/arm/4.4.1/bin/arm-linux-ar rc AR2=/usr/local/arm/4.4.1/bin/arm-linux-ranlib 保存,退出。 #make 编译通过。 执行以下命令即可完成 jpeg 头文件和库文件的制作工作。 #cp jpeglib.h jconfig.h jmorecfg.h /root/yizhi/arminclude #cp .libs/libjpeg.so* /root/yizhi/armlib 5-2-2 交叉编译 e2fsprogs-1.40.2 编译 e2fsprogs-1.40.2 是为了得到二个文件,uuid.h 及 libuuid.so,编译 Qtopia2.2.0 需要这两个文件。 首先解压 e2fsprogs-1.40.2,解压后执行下面的命令: # cd /root/yizhi/e2fsprogs-1.40.2 设置环境变量 # export PATH=/usr/local/arm/4.4.1/bin:$PATH # export CC= /usr/local/arm/4.4.1/bin/arm-linux-gcc 以上的两个环境变量如果已经设置,就不需要重新设置了,执行下面的命令来配置和编译 e2fsprogs-1.40.2: # ./configure --enable-elf-shlibs --host=arm-linux --with-cc=/usr/local/arm/4.4.1/bin/arm-linux-gcc --with-linker=/usr/local/arm/4.4.1/bin/arm-linux-ld # make 也许会提示“makeinfo 命令没有找到”,不过没关系。 将 e2fsprogs-1.40.2/lib/目录下 uuid 的文件夹复制到 yizhi/arminclude 下 # cp -r lib/uuid /root/yizhi/arminclude 将 e2fsprogs-1.40.2/lib/目录下面的库文件复制到/root/yizhi/armlib 下 # cp lib/libuuid.so* /root/yizhi/armlib / 28 e2fsprogs-1.40.2 相关工作完成。 5-2-3 交叉编译 libpng 库 将 libpng-1.2.19.tar.bz2 解压到/root/yizhi 目录下 # cd /root/yizhi/libpng-1.2.19 # cp scripts/makefile.linux ./Makefile 注意,这里的 makefile 不是用./configure 生成的,而是直接从 scripts 文件夹里面复制 的,修改 Makefile 文件: # vi Makefile 修改: [begin] ... AR_RC=/usr/local/arm/4.4.1/bin/arm-linux-ar rc CC=/usr/local/arm/4.4.1/bin/arm-linux-gcc RANLIB=/usr/local/arm/4.4.1/bin/arm-linux-ranlib ... [end] 保存 # make # cp libpng12.so* /root/yizhi/armlib # cp *.h /root/yizhi/arminclude 完成 libpng 头文件和库文件的制作。 5-2-4 交叉编译 zlib 编译前解压 zlib-1.2.3,解压后 # cd /root/yizhi/zlib-1.2.3 设置环境变量 # export PATH=/usr/local/arm/4.4.1/bin:$PATH # export LD_LIBRARY_PATH=/usr/local/arm/4.4.1/arm-linux/lib:$LD_LIBRARY_PATH # export CC= /usr/local/arm/4.4.1/bin/arm-linux-gcc 如果上面已经设置了 PATH 和 LD_LIBRARY_PATH 环境变量,这里不需要重新设置,执行以下 命令生成 Makefile 文件: 29 # ./configure –shared 修改一下: # vi Makefile 修改为: [begin] CC=/usr/local/arm/4.4.1/bin/arm-linux-gcc ... LDSHARED=/usr/local/arm/4.4.1/bin/arm-linux-gcc -shared-Wl,-soname,libz.so.1 CPP=/usr/local/arm/4.4.1/bin/arm-linux-gcc -E ... AR=/usr/local/arm/4.4.1/bin/arm-linux-ar rc RANLIB=/usr/local/arm/4.4.1/bin/arm-linux-ranlib ... [end] 保存 # make 将编译生成的动态库及相关的头文件分别复制到 armlib 和 arminclude 目录下 # cp libz.so* /root/yizhi/armlib # cp *.h /root/yizhi/arminclude 经过以上步骤的操作,编译 Qtopia2.2.0 时所需的头文件和库文件制作完成,下面我们来 开始 Qtopia2.2.0 的编译。 5-3 qtopia-free-forlinx-2.2.0 的编译 5-3-1 qtopia-free-forlinx-2.2.0 源码编译方法 注 意 : 编 译 qtopia-free-forlinx-2.2.0 前 确 认 已 经 把 您 刚 才 制 作 的 /root/yizhi/arminclude 下 的 文 件 放 到 交 叉 编 译 器 安 装 目 录 “arm-none-linux-gnueabi\libc\usr\include” 里面,所有的库文件放到交叉编译器安装目 录的“arm-none-linux-gnueabi\libc\usr\lib” 文件夹下面 另外需要注意的是 用官方提供的 Qtopia2.2.0 源代码编译出来的版本,主界面的图标下会出现一条虚线,影 30 响 美 观 , 您 可 以 解 压 源 代 码 ARM-qtopia-free-src-2.2.0.tar.gz 到 /root/yizhi 文 件 夹 后 (yizhi 是自己建立的文件夹),打开 qtopia-free-2.2.0/qt2/include/qconfig-qpe.h 文件 和 qtopia-free-2.2.0/qtopia/src/qt/qconfig-qpe.h 文件,在里面增加以下内容即可解决虚 线的问题: #define QT_NO_QWS_GFX_SPEED 注 意 : 我 们 提 供 的 一 键 编 译 脚 本 中 用 到 了 “ /root/yizhi ” 目 录 , 所 以 您 需 要 把 ARM-qtopia-free-src-2.2.0.tar.gz 放到/root/yizhi 目录下面,然后执行以下命令解压 #cd /root/yizhi #tar zxvf ARM-qtopia-free-src-2.2.0.tar.gz ./ 开始编译 #./build 说明:飞凌制作了一键编译脚本来方便您使用和学习, 脚本里面有编译时需要的环境变量, 您可以打开来学习。 注意:编译过程中产生的状态信息将记录到当前目录下的 qtopia2.2.0Makelog 文件里面, 如果编译过程中产生了大量的错误信息,打开该文件,查找 error 关键字进行问题的定位,里 面记录的信息对您很有帮助,有时焦点不会停留在出现错误的位置,这时查看日志文件就很重 要了。 5-3-2 关于一些 bug 的处理 编译过程中如果产生错误信息,需要解决掉才能继续编译下去,错误信息的产生主要是因 为编译器版本造成的,共有以下几类错误信息: 1.缺少工具错误 31 这是编译时遇到的第一个问题,编译 qt2 时需要使用 uic 工具,uic 是 PC 上运行的工具, 用来把 Qt 的界面文件,也就是.ui 文件转换成.h 文件和.cpp 文件,转换完成后才能交给交叉编 译器编译。 解 决 办 法 : 把 qtopia-free-2.2.0/dqt/bin 里 面 的 uic 文 件 拷 贝 到 qtopia-free-2.2.0/qt2/bin 下面即可。 注意:uic 拷贝到 qtopia-free-2.2.0/qt2/bin 后,需要修改一下 build 脚本文件,因为如 果您重新执行 build 命令,该脚本会把刚才编译中的 qtopia-free-2.2.0 文件夹删除,重新解 压,形成新的 qtopia-free-2.2.0,开始编译,这样刚才拷贝的 uic 就没意义了。 32 修改方法如下图所示: 就是在 rm –fr qtopia-free-2.2.0 和 tar xfvz qtopia-free-src-2.2.0.tar.gz 语句前 加上 # 注释掉,修改后保存退出。 然后执行 #./build,重新编译即可。 2.缺少类声明 error: ‘QWSInputMethod’ has not been declared 修改方法如下: #cd /root/yizhi/qtopia-free-2.2.0/qt2/src/kernel #gedit qwindowsystem_qws.h 在前面增加以下两行 class QWSInputMethod; class QWSGestureMethod; 保存退出,继续编译 33 3.缺少文件错误 源代码需要 custom-linux-arm-g++.h/cpp 文件,但是没找到。 解决办法: #cd ./qtopia-free-2.2.0/qtopia/src/libraries/qtopia #cp custom-linux-ipaq-g++.cpp custom-linux-arm-g++.cpp #cp custom-linux-ipaq-g++.h custom-linux-arm-g++.h 继续编译 #cd /root/yizhi #./build 34 4.无法匹配到 QSizePolicy 类的构造函数,即 QSizePolicy 类没有提供特定参数的构造函数 解决办法: 查看出错信息的文件,这里是 passwordbase_p.cpp,且出错的地方是第 35 行,找到该文件的 在 Ubuntu 中的具体位置: #find ./ -name passwordbase_p.cpp 35 找 到 后 在 ./qtopia-free-2.2.0/qtopia/src/libraries/qtopia/.ui/release-shared 目 录下面,执行以下命令,修改该文件: #gedit ./qtopia-free-2.2.0/qtopia/src/libraries/qtopia/.ui/release-shared/pas swordbase.cpp 36 移动光标到第 35 行,如下图所示: 把 prompt->setSizePolicy(QsizePolicy((QsizePolicy::SizeType)7,(QsizePolicy::SizeType) 7,0,0,prompt->sizePolicy().hasHeightForWidth())) 函数中的 0,0,去掉,即 prompt->setSizePolicy(QsizePolicy((QsizePolicy::SizeType)7,(QsizePolicy::SizeT ype)7,prompt->sizePolicy().hasHeightForWidth())) 37 去掉后如下图: 保存退出,执行如下命令重新编译: #./build 重新编译后 ,会出现若干次这个类型的错误,解决办法非常相似,这里就不一一介绍了。 38 5.类的成员函数前有额外的类名字 如下图: 解决办法: 根据错误提示信息找到 qdawg.cpp 文件,gedit 打开该文件,移动光标到 294 行。 39 修改后如下图所示: 40 保存,退出 #./build 重新编译。 6.open 函数调用缺少必要的参数 如下图提示的错误: 41 解决办法参考下图: 打开 qmemoryfile_unix.cpp 文件,修改第 51 行 42 f=::open(tempFile,latin1(),0_CREAT | 0_WRONLY); 修改为 f=::open(tempFile,latin1(),0_CREAT | 0_WRONLY, 0666);即增加 0666 参数, 保存,退出。 对于 open 函数来说,仅当创建新文件时,第三个参数使用,用于指定文件的访问权限位 注意:共有两处这样的修改,另外一处在 qtopia-free-2.2.0\qt2\src\tools\qmemoryfile_unix.cpp 文件的第 143 行位置,修改方法与 qmemoryfile_unix.cpp 文件相似。 #./build 重新编译 7.缺少this指针 如下图: 43 解决办法:执行下面的命令 #gedit ./qtopia-free-2.2.0/qt2/include/qvaluestack.h 移动光标到 57 行 将 remove( this->fromLast() );改为 this->remove( this->fromLast() ); 保存退出 8.缺少系统头文件 如下图所示: 44 解决办法如下: #gedit .\ qtopia-free-2.2.0\qt2\src\kernel\qpixmapcache.cpp 修改第 125 行为 45 即: #define PAGE_SHIFT 12 #define PAGE_SIZE (1UL << PAGE_SHIFT) #define PAGE_MASK (~(PAGE_SIZE-1)) //# include // PAGE_SIZE,PAGE_MASK,PAGE_ALIGN 这样修改是因为新的 Linux 内核源代码中已经不包含该头文件了。 另外其他的地方也用到了该头文件,同样需要去掉,执行以下命令: #gedit ./qtopia-free-2.2.0/qt2/tools/qvfb/qvfbview.cpp 46 移动到第 39 行,修改为下图所示: 修改原因是因为 asm/page.h 文件里面定义了一些宏,咱们在这里重新定义了必须使用的 宏,所以这里就不需要 asm/page.h 文件了。 说明:继续编译后会出现几次以上类型的错误,出现的错误类型就是以上总结的几种,修 改方法按以上步骤即可,主要就是发现哪个文件出错,找到该文件,用 gedit 打开该文件,移 动到出错的行上,修改,保存退出。出错的文件和行号是根据编译时的错误提示信息来找到的, 一定要查找第一个 Erro 的地方,这里是需要重点关注的。通过这几种错误类型的修改,您会对 Qt 移植有了新的认识,也提高了您的软件移植能力。 47 编译成功完成后,Qtopia2.2.0 会自动的安装到 qtopia-free-2.2.0/qtopia/zImage/opt 下面,如下图 48 进入到 Qtopia 目录下面,如图: 注 意 : 编 译 好 的 Qtopia 下 面 没 有 字 体 , 自 己 需 要 把 字 体 放 到 Qtopia/lib/fonts 下 面,qtopia-free-2.2.0/qt2/lib/fonts 文件夹下有可以用的字体,我们只需要 helvetica 类型, 该类型支持中文。执行以下命令: #cp/root/yizhi/qtopia-free-2.2.0/qt2/lib/fonts/Helvetica*/root/yizhi/qtopia-fr ee-2.2.0/qtopia/image/opt/Qtopia/lib/fonts/ 另 外 需 要 把 /root/yizhi/armlib 下 面 的 文 件 全 部 拷 贝 到 /root/yizhi/qtopia-free-2.2.0/qtopia/image/opt/Qtopia/lib/下面 字体文件和库文件拷贝完成后,把 Qtopia 整个目录放到网络文件系统的 /opt 目录下面, 如: /forlinx/root/opt/目录 ,如果该目录下面已经有我们提供的 Qtopia 文件夹,您可以把 我们的 Qtopia 文件夹删除掉,来运行您自己编译的版本,运行方法参考第六章 Qtopia2.2.0 的 使用。 49 第六章 Qtopia2.2.0 的使用 飞凌提供的源代码中是不显示鼠标光标的版本,如果您有兴趣来编译 Qtopia2.2.0 且需要 显示鼠标光标,可以自己修改一下源代码,且按照以上 Qtopi2.2.0 编译过程来编译,如何修改 代码显示鼠标光标,也给您留个作业。本手册下个版本时会给您一个解答。 注意: 如何使用 NFS 网络文件系统,请看飞凌 6410 用户手册里面的 NFS 部分。 发布的文件系统中已经包含了 Qtopia4.4.0,Qtopia2.2.0,和 Qt/E4.7 库 如何把文件系统烧写到开发板 NandFlash 上,参考《OK6410 开发板 LINUX2.6 用户手册》烧 写 yaffs 部分 。 如果您烧写 yaffs2 到 NandFlash 失败,请在 boot 中执行 nand erase 400000 50000000 命 令,重新执行 writeyaffs 尝试一下,如果您的 NandFlash 中有非常重要的数据,需要把数据备 份到 SD 卡或者 PC 上,以防误操作,删除重要数据。 飞凌的 Linux 文件系统默认会运行 Qtopia4.4.3,您可以在超级终端中输入以下命令: #killall qpe #qtopia & //杀掉 Qtopia4.4.3 进程 //后台运行 qtopia2.2.0 我们发布的文件系统中,/bin 目录下面提供了 qtopia4 脚本来运行 Qtopia4.4.3,qtopia 脚本来运行 Qtopia2.2.0, qt4 运行 Qt/E4.7.1 库测试程序. 解压飞凌提供的文件系统压缩包 root.tar.gz.到/forlinx/下面。进入 /forlinx/root/opt 目录下面如图: 50 进入到 Qtopia 里面:有如下文件,这是 Qtopia 运行需要的全部文件,如下图: 51 飞凌的文件系统中提供了运行 Qtopia 的命令脚本,可以使用飞凌提供的脚本来运 行 Qtopia2.2.0。进入到超级终端,在命令行中输入#qtopia,回车即可。 这样就在开发板的 LCD 上看到了 Qtopia 的运行界面。如果使用触摸笔来操作屏幕没有反应, 或者说反应不准确,这时需要在超级终端中执行#calibrate 命令来重新校准。校准前请先执行 #killall qpe 命令来杀掉 qpe 进程。 校准程序启动后会在 LCD 上出现十字箭头,用触摸笔按下十字箭头的中心部分,箭头会自 动移动,再次按下十字箭头中心部位,共进行五次操作,就会完成屏幕的校准,Qtopia4.4.3 的 介绍部分有校准时的屏幕图片,您可以跳转到 Qtopia4.4.3 校准部分查看。 校准完成后,再次执行#qtopia 回车,Qtopia2.2.0 桌面系统启动,您就可以使用触摸笔操 作了。 52 软件运行主界面如下图所示: 注意:我们提供的文件系统中的 Qtopia2.2.0 已经中文化了,不需要您再次中文化,如果 您对 Qtopia 的国际化有兴趣可以参考第七章 Qtopia2.2.0 的中文化。另外需要说明的是如果使 用音频和视频播放器播放不了音频和视频文件,您需要把“系统设置”页面中的“插件管理” 里面的 “Media Codecs” 选项全部选择,然后确定,退出设置界面即可播放音视频文件。 53 第七章 Qtopia2.2.0 的本地化 如果您喜欢使用中文界面,或者其他的语言,那么需要对 Qtopia 进行本地化,这里飞凌把 Qtopia2.2.0 界面翻译成中文,即中文化 7-1 安装 linguist-qt4 软件 确认您的 Ubuntu9.10 里面是否安装了 linguist-qt4 软件,如果没有的话需要安装一下 linguist-qt4, 该软件是本地化中重要的软件,用这个软件来进行语言的转换. 执行以下命令来查看您的系统中是否已经安装了 linguist-qt4 软件 #which linguist-qt4 如果有会列出 linguist-qt4 的存放路径,如果没有使用 Ubuntu 的 Software Center 来下 载 安装方法 1.确保您的 Ubuntu 连接上互联网,因为需要从 Ubuntu 的软件中心下载软件包 2.下载且安装软件 如下图: 54 选择 Ubuntu 桌面最上面的 Appliacations->Ubuntu Software Center,在搜索框中输入 Qt4 linguist 即可搜索到该软件。 选择该软件,然后按下右边的向右小箭头,会出来新的页面,双击新界面的 Install 按钮 即可安装,安装完成后打开一个终端窗口,然后执行命令 #which linguist-qt4 #/usr/bin/linguist-qt4 这样 linguist-qt4 成功安装了。 7-2 汉化界面 进入 qtopia 的目录 #cd /root/yizhi/qtopia-free-2.2.0/ # source setQpeEnv # cd qtopia 将 Qtopia 系统使用的语言设置为简体中文: # ./configure -xplatform linux-arm-g++ -languages "zh_CN" 为了确保翻译所必须的文件都存在并且是最新的,执行以下命令: # make lupdate 55 执行以下命令产生那些在源代码中没有办法找到的字符串的翻译文件。 # bin/nct_lupdate 新建.directory 文件 # gedit /root/yizhi/qtopia-free-2.2.0//qtopia/i18n/zh_CN/.directory 输入以下内容: [Translation] File=QtopiaI18N Context=Chinese(MainLand) [Desktop Entry] Name[]=Chinese(MainLand) 每种语言都需要一个.directory 以设定语言,这个会在 Qtopia 的 Language 中显示。 再次更新: #cd /root/yizhi/qtopia-free-2.2.0//qtopia/ #make lupdate #cd i18n/zh_CN 注意:用 linguist-qt4 打开需要翻译的 ts 文件,在 Translation 处写入中文,然后 Crtl+Enter,看到绿色的对勾就是翻译成功了,每个文件注意要保存。这里以 Qtopia2.2.0 主 界面中“应用程序”页面的中文化为例,介绍一下: 用户在 zh_CN 目录下面的 QtopiaApplications.ts 文件上右键,选择用 linguist-qt4 打 开,打开后会出现提示对话框,您需要在 target language 里面选择 chinese,确定即可: 56 汉化后如图: 57 您可以按照这个方法来中文化其他的 ts 文件,完成后,cd 到 zh_CN 文件夹下,执行以下 命令用来创建两个文件: #touch QtopiaRingTones.ts QtopiaThemes.ts 在 make install 时可能会出现两个文件不存在的错误,所以建立两个空的就可以了。 #lrelease *.ts 用 lrelease 产生 QT 消息文件。会有两个 warning,这是刚才那两个没有意义的空文件造 成的 执行: #cd ../../ #make lupdate #make install Qtopia2.2.0 的中文化全部完成,把新生成的/root/yizhi/qtopia-free-2.2.0/qtopia/image 拷 贝 到 /forlinx/root/opt 下 面 , 更 名 为 Qtopia2.2.0 , 就 可 以 运 行 了 , 运 行 前 请 确 认 /root/yizhi/armlib 里面的库文件拷贝到了 /forlinx/root/opt/Qtopia2.2.0/lib 下面,且 /forlinx/root/opt/Qtopia2.2.0/lib/fonts,目录里面有字体文件存在,如果字体文件不存在 请参考第六章 “Qtopia2.2.0 的使用”来拷贝字体文件。 58 7-3 运行 Qtopia 在超级终端中输入 然后在 settings 里的 Appearance settings 中进行 Fonts 的选择,选择 Helvetica 字体, 在 language 中选择 Chinese 即可。 59 下面是运行的效果 60 61 第八章 Qt/E4.7 的编译和使用说明 8-1 Qt/E4.7 的编译 Qt4.7 的发布使 Qt 又有了更为长足的进步,通过官方提供的 changs,可以看到有如下改变: 1.首先是 Qt Quick UI Tools 的正式发布,这可以说是 Qt4.7 里最重大的改变,再次强调 了 Qt 发展方向,把 UI 设计交给专业的设计人员,功能模块和界面设计独立,减短软件开发的 周期。 2.文档的巨大变化,可以说最近 Qt 的三个版本已经发生了翻天覆地的变化,在 Qt4.5 中, 文档保持了 Qt 一贯的风格,而 Q4.6,则在内容组织和布局上进行了改变,Qt4.7 文档则是一次 变革,不仅在布局和内容上更加人性化,新的 UI 风格也给人眼前一亮的感觉; 3.QtCreator 正式迈入 2.0 时代,在保持原来桌面开发内容的基础下,更考虑到未来移动开 发的趋势,增加了 symbian 开发环境,而是,对于中国开发者来说,终于拥有了中文的界面, 这是令许多开发者高兴的事情。 4.网络方面得到了加强,有新的类加入,弥补原来的众多不足; 5.质量和性能上得到提升,Qt4.7 中采用了最新的 webkit2.0 模块,同时,大量第三方相关 库也得到了更新,并且补充了新的功能类和函数,保证 Qt 功能上的强大。 注意:Qt 4.7.1 是 Qt4.7.0 一个 bug 修复版本,它保持对 Qt4.7.0 向前和向后的兼容(源 代码和二进行制),飞凌使用 Qt4.7.1 版本,也是目前所有开发板厂商中唯一使用 4.7.1 库的厂 家。 编译环境:Ubuntu9.10 开发板:OK6410 和 TE6410 交叉编译器:arm-linux-gcc4.3.2 飞 凌 提 供 的 Qt/E4.7.1 源 码 包 位 于 发 布 包 中 , 文 件 名 : qt-everywhere-opensource-src-4.7.1.tar.gz,里面含有一键编译脚本 build 文件,可以在 Ubuntu9.1.0 上顺利的编译通过,编译前确认您已经安装好了 4.3.2 交叉编译器,安装位置如下: 62 编译方法可以参考下图: 63 8-2 Qt/E4.7 的使用 飞凌发布的文件系统中含有运行 Qt/E4.7 测试程序的脚本文件 qt4,您可以在超级终端里面 直接输入 qt4 回车即可运行。您也可以打开该脚本文件,看一下环境变量的设置,作为应用软 件运行的一个参考。 Qt/E4.7 的库文件和测试程序放在文件系统的 /opt/qt-4.7.1 目录下面,如果是网络文件 系统则位于 /forlinx/root/opt/qt-4.7.1 目录下面 运行效果如下图: 界面 1: 64 界面 2: 65 界面 3 66 第九章 使用集成开发环境开发 Qt 应用程序 飞凌 6410 开发板可以帅气的运行这么多桌面系统,您肯定也是跃跃欲试,下面我们将介绍 一下如何在上面运行一个自己写的 helloworld 应用程序,该应用程序的源代码位于我们的发布 包中,文件名:Helloword.tar.gz 您可以使用 QtCreator 集成开发环境开发 Qt 应用,QtCreator 很类似于 Windows 上的 VC++ 集成开发环境,可以进行控件的可视化,所见即所得,使用该软件可以开发 PC 上的 Qt 应用和嵌 入式环境下的 Qt 应用。 9-1 建立 QtCreator 开发环境 下载 QtCreator 方法,在 Ubuntu 的 Applications 主菜单下,有一项 “Ubuntu Software Center”,点击后,在弹出的对话框中 输入 Qt Creator ,会列出该软件,如下图所示 用户点击右边的箭头,会出现下载安装该软件的提示,您只需按照提示即可完成安装,安 装前确保您的 Ubuntu 能够访问互联网,该软件会从 Ubuntu 的服务器下载. 安装完成后 Application->Programming->Qt Creator 就是该开发工具。 67 运行后如下图: 使用该工具,用户可以方便的开发所见即所得的图形应用程序,如下图: 68 9-2 QtCreator 环境制作属于您的 HelloWorld 飞凌以经典的 HelloWord 应用程序为例,说明一下如何把 Qt 应用程序移植到飞凌的开发板 上运行,HelloWord 应用程序基于新编译的 Qtopia4.4.3 形成的库文件运行。 创建 HelloWord 应用程序,这个过程比较简单,用户看图即可实现 File->New 选择 Qt4 GUI Application ,确定 输入工程名称:HelloWord,然后确定 69 其他默认即可 Base Class 选择 CDialog 70 71 编译: 72 运行: 这样的编译结果是在 PC 上运行的版本,您可以用该软件来设计图形界面,代码编写完成后 使用下面方法编译,软件能够在开发板上运行 。 看一下刚才形成的 HelloWord 文件夹 73 里面已经有了 Helloword.pro 文件,这个文件是用 Qt Creator 开发工具创建 Helloword 工 程时自动形成的。 下面就是形成 Makefile 文件了,使用编译 Qtopia4 时形成的 SDK 包中的 qmake 工具来形成 Makefile 文件,使用该 Makefile 文件,编译完成后程序就可以在开发板上运行了, 我的 qmake 地址:/witech/arm-qt-extended-4.4.3/builddir/sdk/qtopiacore/target/bin/qmake 注意:您编译 ARM-qt-extended-opensource-src-4.4.3.tar.gz 的目录不一定跟我们的相 同,我们使用的是/witech/arm-qt-extended-4.4.3,这里需要根据您的目录灵活的设置。 先从命令行 cd 到 Helloword 目录,然后执行以下命令,即可形成 Makefile 文件 #/witech/arm-qt-extended-4.4.3/builddir/sdk/qtopiacore/target/bin/qmake 注意:请不要直接使用以下命令,因为该命令编译出的应用程序很可能是在 Ubuntu 上运行 的版本 #qmake 形成 Makefile 文件后需要修改一下才能编译应用程序,否则不会编译通过。 74 如图所示,在 CFLAGS 和 CXXFLAGS 中添加 “-fno-rtti” 编译参数,保存退出,然后 make 即可编译通过。 75 把 Helloworld 可执行文件放到开发板的 nandflash 中,我的放到了 /mnt/disk/下面, 注意:可以使用以下方法来判断您编译器出来的 Helloword 是 PC Ubuntu 上的运行版本还 是开发板上的运行版本: #cd /forlinx/root/mnt/disk/ #file Helloword 76 77 如果是下图的显示则是 PC Ubuntu 版本 在开发板上运行 PC Ubuntu 版本的 Helloword 会出现运行错误提示信息. 这是因为运行 Helloword 前需要设置环境变量,否则会出现运行错误的提示,如下图: #设置运行环境变量(提示:您可以把环境变量和执行命令放到一个脚本文件中,执行脚本文 件) #export PATH='/opt/Qtopia4.4.3/bin:/sbin:/usr/sbin:/bin:/usr/bin' #export QPEDIR='/opt/Qtopia4.4.3' #export QTDIR='/opt/Qtopia4.4.3' #export QT_QWS_FONTDIR='/opt/Qtopia4.4.3/lib/fonts/' #export QWS_DISPLAY='LinuxFb:mmWidth76:mmHeight44:1' #export QWS_MOUSE_PROTO='Tslib:/dev/input/event1' #export TSLIB_CALIBFILE='/etc/pointercal' #export TSLIB_CONFFILE='/usr/local/tslib/etc/ts.conf' #export TSLIB_CONSOLEDEVICE='none' #export TSLIB_FBDEVICE='/dev/fb0' #export TSLIB_PLUGINDIR='/usr/local/tslib/lib/ts' #export TSLIB_ROOT='/usr/local/tslib' 78 #export TSLIB_TSDEVICE='/dev/input/event1' #export TSLIB_TSEVENTTYPE='H3600' #exportQT_PLUGIN_PATH='/opt/Qtopia4.4.3/plugins:/opt/Qtopia4.4.3/qt_plugins/ 9-3 运行您亲手制作的 HelloWorld 在超级终端里面执行以下命令: #Helloword –qws & 在开发板的屏幕上即可看到: 使用 Qtopia2.2.0 和 Qt/E4.7 的 SDK 开发应用软件的步骤与使用 Qtopia4.4.0 的 SDK 开发 软件的步骤基本相似,下一版本我们将介绍使用 Qt/E4.7 库开发驱动测试程序的一些例子。 您也可以使用其他的 Qt 设计软件来设计图形界面,例如 Qt Designer ,然后用 qmake 形 成工程文件。本手册使用了 QtCreator,该工具是诺基亚新推出的主要针对 Qt 的集成开发环境。 79 第十章 附录 10-1 QT 资料文件说明 3rdpart-lib-for-Qtopia2.2.0.tar.gz 编译 Qtopia2.2.0 需要的第三方库和源 码 ARM-qt-extended-opensource-src-4.4.3.tar.gz Qtopia4.4.3 的源码和一键 编译脚本 ARM-qtopia-free-src-2.2.0.tar.gz 开发板上运行的 Qtopia2.2.0 的源码和一 键编译脚本 root.tar.gz 文件系统压缩包,用于 NFS 挂载,挂载完成后,在超级终端里面执行 writeyaffs 命令即可烧写文件系统到 NandFlash,具体参考 6410 的用户手册中烧写 yaffs2 文件系统部分。 forlinx-arm-linux-4.3.2.tar.gz 交 叉 编 译 器 , 用 于 编 译 Qt/E4.7.1 , Qtopia2.2.0,Busybox(制作文件系统),内核源码。 forlinx-arm-linux-4.4.1.tar.gz 交 叉 编 译 器 。 可 以 用 于 编 译 Qtopia4.4.3,Qtopia2.2.0 PC-qtopia-free-src-2.2.0.tar.gz 的源码 PC 上 Ubuntu 系统中运行的 Qtopia2.2.0 qt-everywhere-opensource-src-4.7.1.tar.gz Qt/E4.7.1 库源代码 tslib.tar.gz 触 摸 屏 校 准 需 要 的 tslib 库 和 源 码 ( 编 译 Qtopia4.4.3,Qtopia2.2.0,Qt/E4.7.1 均需要该库) Helloword.tar.gz Helloword 例子程序. 注意:我们制作的文件系统采用 forlinx-arm-linux-4.3.2.tar.gz 交叉编译器, 内核采用的是 forlinx-arm-linux-4.3.2.tar.gz,或者 cross-4.2.2-eabi.tar.bz2 编 译, 您如果基于该文件系统开发 应用软件,最好采用 forlinx-arm-linux-4.3.2.tar.gz 交叉编译器编译您的程序。 80

    Top_arrow
    回到顶部
    EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高进,我们会尽快处理。