【毕业学位论文】(Word原稿)基于Moblin系统的COD移植和二次开发-软件工程_第1页
【毕业学位论文】(Word原稿)基于Moblin系统的COD移植和二次开发-软件工程_第2页
【毕业学位论文】(Word原稿)基于Moblin系统的COD移植和二次开发-软件工程_第3页
【毕业学位论文】(Word原稿)基于Moblin系统的COD移植和二次开发-软件工程_第4页
【毕业学位论文】(Word原稿)基于Moblin系统的COD移植和二次开发-软件工程_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于 统的 植和二次开发 基于 统的 植和二次开发 摘 要 当我们拿到项目规范文档时,我们通常看到一项是目标平台 ( 比如 ,这就存在平台的优势和劣势。 让我们想象一下我们接到一个任务要使这个应用运行在另一个平台上(比如 上。或者我们想象一下,我们需要在一个平台上使用本来为另一个平台所写的代码。 从这里我们看到了难度。 你开始移植,并且考虑了所有的规范和软件架构。 但是如果架构本来就是错的(比如从一开始它就不适合另一个平台),你就会发现你不得不重写很多代码。 我们有一个例子。 这个程序打开物理磁盘 0,读取 后将 入另一个文件中,配置文件并保存。这个过程是给 计的一个过程。 在 ,是完全不同的,试想成百上千个 重大不同会是移植项目多么艰难。 代码移植,顾名思义,将代码从一个本来有效运行的平台转移到另一个未知的平台。该代码并非针对未知平台编写,所以能在未知平台上,不通过修改运行,是几乎不可能发生的事情,代码移植就是将代码生成的程序运行在该未知平台上成为可能。更精确的来说,在计算机科学领域,移植就是一个改造软件的过程,该过程使原本针对一种计算环境的计算机程序在另一种环境中( 不同的 同的操作系统,不同的第三方库)运行。广义上来说,移植也是将软件适应新环境的过程。 因为代码移植存在着诸多好处,所以我们有必要在这方面做出一点研究。 作系统的不断发展与成熟已极大地拓宽了其应用领域。随着应用的日益推广与深入, 台也就需要更多、更丰富的应用来支撑。一般情况下,我们通过开发新的应用系统来丰富 平台功能。然而 , 由于新系统尤其是大型系统的开发,通常都需要较长的周期及较大的投资,因此,实际中也常常采用另外一种软件技术:跨平台移植技术,来满足应用的需求,现有 用系统大都经过实践验证、性能稳定且资源丰富,因此,将已有异构平台的应用软件移植到 台就更有意义 。 本文将着手于一个 目到 移植,从中总结一些移植的方法、移植的经验以及移植的注意事项等和移植有关的内容,从 目到 移植这一个面,让大家对移植有一个感性的认识和一个比较理性的理解。 关键词: 移植, 基于 统的 植和二次开发 N we in is we s it is to on Or to on to to of if I it it to a s of BR it to it to a In is of so an be a is it or is in a to to of to in of of we a on its of be is to we of to is at In of we we a of 基于 统的 植和二次开发 目 录 第一章 绪论 码移植的研究意义 码移植的研究现状 章小结 二章 移植过程 介 介 目简介 译环境的搭建 安装与配置 的安装 的安装 译错误的修改 序运行的完善 三章 代码移植的研究 述 码移植的一些方面 编译器 + +) 较 章小结 四章 编写可移植代码的建议 述 写可移植代码的建议 章小结 五章 结论 考文献 辞 文及原文 基于 统的 植和二次开发 第 1 页 共 25 页 第一章 绪论 码移植的研究意义 代码移植,顾名思义,将代码从一个本来有效运行的平台转移到另一个未知的平台。该代码并非针对未知平台编写,所以能在未知平台上,不通过修改运行,是几乎不可能发生的事情,代码移植就是将代码生成的程序运行在该未知平台上成为可能。 更精确的来说,在计算机科学领域,移植就是一个改造软件的过程,该过程使原本针对一种计算环境的计算机程序在另一种环境中(不同的 同的操作系统,不同的第三方库)运行。广义上来说,移植也是将软件适应新环境的过程 。 代码移植的好处有以下几点: 更好的稳定性和更高的可靠性,通过移植一些在其他平台下久经考验的软件和库,显然比自己在那里重写可靠很多。 更低的成本,在科学的移植下,减少了需求分析,代码编写等过程,成本可以大大降低。 更好的安全性,如果软件本身没有什么安全问题,仅仅修改代码的话,不会出现多少不安全的代码,进而导致不安全的漏洞,安全隐患不大。因为修改总比编写出现错误的几率小。 对标准肯定的强化,试想,当一个库被广泛应用于各个平台上时,你会使用这个库吗?你会深入研究这个库吗?当你掌握了这个库之后,你还会在做项目时 使用其他类似的但是不跨平台的库吗?答案显而易见,不会。当一个库在各个平台上都被接受后(比如 形库),那么在开发时,开发人员将它作为第三方库的决定也是显而易见的,良心循环,更多的使用该库,该库也就成为了一个标准。 更缩小一些范围,把 代码移植到 又有什么好处呢? 作系统的不断发展与成熟已极大地拓宽了其应用领域。随着应用的日益推广与深入, 台也就需要更多、更丰富的应用来支撑。一般情况下,我们通过开发新的应用系统来丰富 平台功能。然而 , 由于新系统尤其是大 型系统的开发,通常都需要较长的周期及较大的投资,因此,实际中也常常采用另外一种软件技术:跨平台移植技术,来满足应用的需求,现有 用系统大都经过实践验证、性能稳定且资源丰富,因此,将已有异构平台的应用软件移植到 台就更有意义。 1 码移植的研究现状 由于操作系统核心机制的差异才使得应用系统不能直接跨平台运行,因此应用跨平台移植的本质是解决异构操作系统的运行环境不兼容问题。目前,较为主流的跨平台移植方法可以分为两大类:基于操作系统虚拟机的应用跨平台技术以及基于代码重构 的应用移植技术。 基于虚拟机的应用跨平台技术 从层次结构上分析,计算机系统可以分为微程序语言机器、机器语言机器、汇编语言机器、高级语言机器、操作系统机器及应用语言机器等六个层次。虚拟机 (没有实际计算机硬件与之相对应的、完全由软件实现功能的、基于特定操作系统的“纯软计算机”。 虚拟机作为独立的应用运行于主操作系统之上,基于虚拟机平台,用户即可引导、运行特定的客户操作系统及应用。 基于 统的 植和二次开发 第 2 页 共 25 页 虚拟机的核心机制是通过软件方式为客户操作系统提供一个虚拟的硬件平台,准确的说就是虚拟了机器 的 相关 I/O 接口。对客户操作系统而言,这个虚拟平台等价于一个“裸机”系统。用户可在该环境下直接安装客户操作系统,进而又可以安装,运行客户操作系统上的应用程序。通常一个虚拟机平台包括了服务器进程、核心及驱动等组件,这些组件使得 虚拟 台实现紧密耦合。服务器进程提供能使 统使用的对 件系统、网络服务及其它设备(如显示器、键盘及鼠标等)的映射,而核心与驱动则实现了 行所需的底层接口。基于虚拟机可以安装多个操作系统,而系统的切换就是应用程序的切换, 这也就使得应用程序跨平台运行非常方便。本质上讲,这种方式实现了操作系统的跨平台运行。进而解决了平台上的应用运行问题。 另外,虚拟机所体现的技术优势还在于其能够在同一台物理机器上虚拟出多个逻辑终端。以 品为例,各虚拟机进程是逻辑上相互独立的“计算机”,各虚拟机之间、虚拟机和宿主机之间、虚拟机和其它网络计算机之间是完全等价的。基于虚拟机平台仅需一台物理计算机即可建立实际中由若干物理终端所组成的网络,甚至可以建 立 拟环境。虚拟机的强大应用功能不但为应用的跨平台提供了便利,而且 也为网络应用的移植和测试提供了良好的支持。 可以说,虚拟机技术是实现应用跨平台的较为有效的方法。 台的良好性能在保证虚拟机及 统的稳定性和安全性的同时,还有助于保护 统不受应用异常的影响,提高了系统性能。目前,较为主流的虚拟机产品有: 。虽然基于这一技术可以非常方便地实现应用的跨平台运行,但由于其要么不能脱 离 统,要么成本较高、产品性能不完善,所以该技术并不能满足向自主 代码重构 所谓代码 重构就是围绕现有 用系统的源码开展二次设计,使移植的新型系统符合 台的运行要求。代码重构可以很好地解决虚拟机技术所不能解决的平台依赖问题,是跨平台移植方案中较为彻底的方法,也是实际工程项目中主要采用的方法。结合研究工作,本文给出两种代码重构的移植方案:逆向逐步代码重构及逆向总体代码重构。 逆向逐步代码重构主要是通过逐一修改 用源码的方法将其应用移植到目标平台。基于该方法重构软件系统直接即可进行系统的编码与测试。方案的实施包括以下几个步骤:首先分析并建立 程 序接口对照表;其次,分析 用源码,对原系统代码中与目标开发环境有差异的变量、程序结构、函数接口、数据库接口等进行转换;第三,根据现有系统的文件结构修改 件;最后,在 台上编译生成新应用系统并进行功能测试。 逆向总体代码重构与逆向逐步代码重构技术不同,基于该方法的系统重构主要从总体结构考虑,不涉及原系统的具体编码,操作步骤可分为:分析原系统逻辑结构,逆向设计原系统的流 程及各模块的功能与接口;实现新系统的总体设计;在新的操作系统平台上采用特定编程技术 进行系统的二次开发;完 成系统的性能测试与功能优化。 2 章 小结 国内关于代码移植方面的内容不多,技术方面也不够成熟,而且代码移植涉及的面很广,我们从 用到 为切入点,来基本掌握移植的方法,对移植有个感性认识的 基于 统的 植和二次开发 第 3 页 共 25 页 同时,理性地分析代码移植中的方方面面,为代码移植做一点小小的贡献。 第二章 移植过程 介 由 司开发的基于 操作系统,该系统最初目的是应用于备。 目由 司于 2007 年 7 月正式启动,最初主要集中于开发 件系统,基于 操作系统作为突破口。因为 统的出现,从而出现了新的产品设备种类,能够访问 丰富的内容,同时没有与 关的复杂性。 备从移动互联网设备( 车载信息系统、便携式媒体播放器( 个人导航设备( 数码机顶( 笔记本电脑等以各种形式推动新技术、新设备的发展。 虽说 一个快速崛起的 型版,但是显然目前网上对 技术支持是比较少的,可以说,相对于其他 行版,诸如 ,技术支持文档显得很少,一些工具也相对较少。 使用的 核版本为 核版本也是 者环境极为相似,鉴于关于 资料更多,技术支持更成熟,决定把 为一个移植的中间平台,这样或许能够更顺利的进行移植工作。 3 介 由 司的一个开发小组完成的针对 网本的一个程序,是针对网本开发的教学软件,旨在使用该软件可以轻松管理课堂,进行教学。 搜索到附近的一些同样使用 机器,在这个网络里面,进行一些教学活动。一些基本的功能如:组网,发消息,传文件,分享桌面等。 目简介 本次移植项目的任务,是将针对 网本的一个程序 植到 ,使程序能在 运行。 程序原来是在 P 下开发的,一些类库特别是第三方类库、编译过 程和数据结构方面和 在较大的差异,可能也需要牵涉到平台兼容性的问题。 拿到程序的时候,只有代码,没有文档,因为整个项目是一个敏捷开发的过程,拿到的版本也是一个相对稳定的版本,但是并非 本。跟开发人员作了一下交流,了解了程序基本的功能,就开始进入自己的移植过程。 基本的思路就是,先搭建环境,包括安装 装 库,安装 装 个给 c+提供开发编译环境的 件,综合考虑之后选择了 个 在 开发的,所以工程结构方面有所改变, 面的环境也需要适当的配置。在这之后就是读代码,编译并且改错,一开始是一些编译时错 基于 统的 植和二次开发 第 4 页 共 25 页 误,之后是一些运行时错误。 译环境的搭建 安装与配置 2,开发代号 “ 是一个基于 行版(即操作系统),由 司赞助的由社区支持的 目开发。 包含自由和开源软件。 2 的新特性包括: 及更好的摄像头支持!新特性不止这些,在这个版本中, 默认启用,这意味升级时只会下载最小化的升级包,而且升级速度也将大幅提升。 从网上获取 光盘镜像,交大 ) 上也有光盘镜像,刻好盘后就可以进行 安装。整个过程无需太多的操作,安装过程简洁。 安装完成后升级 用 预升级)技术,通过网路下载新版本所需的安装包轻松升级,而不必下载并刻录 装光盘。 预升级)解决所有依赖,下载所需升级包,配置 询问用户重启即可完成升级。 确保你现有的 统已经升级到最新,之后输入如下命令即可开始预升级了。 c 级完成后,配置第三方软件仓库。因为专利许 可证的原因, 件仓库不包含 视频播放及解码库支持。正因为如此,你必须从第三方软件仓库中安装那些软件。我们会安装 件仓库, 业版的软件仓库,是由 并而来的。各种各样的应用程序包含在这个软件仓库中,比如 加密的 多媒体应用程序使用的解码库,以及闭源的 卡驱动, 含以下两个主要的软件仓库: 一个被命名为 “ (“自由” ),主要是开源软件(开源软件的含义通过 权指 引定义),但因为美国专利保护法案又不能包含在 。 另一个被命名为 “ (“非自由” ),主要是非自由软件,就是其它所有那些不能非 自由软件,包括公开源代码的软件,但是有“非商业使用”之类的限制。 鉴于我们使用 桌面环境,我们使用如下命令: c ,我们需要安装显卡驱动,鉴于我的机器是 显卡,故只有 卡驱动的安装说明。 2 使用开源的 动作为 卡的驱动。根 据需求的不同这个开源驱动应该可以满足要求了。 卡的内核模式设置 (是通过 源驱动对默认启用的。当然,如果想在 2 系统下启用 3D 支持,你必须安 卡 基于 统的 植和二次开发 第 5 页 共 25 页 驱动。需要输入如下命令: c 接着,我们需要禁用一个服务,名为 是美国国家安全局( 于强制访问控制的实现,是 上最杰出的新安全子系统。 在 区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。 认安装在 ,也可以作为其他发行版上容易安装的包得到。大部分使用 人使用的都是 绪的发行版,例如 们都是在内核中启用 ,并且提供一个可定制的安全策略,还提供很多用户层的库和工具,它们都可以使用 功能。 一种基于 域 模型( 强制访问控制( 全系统,它由 写并设计成内核模块包含到内核中,相应的某些安全相关的应用也被打了 补丁,最后还有一个相应的安全策略。 基于以上的事实,和 多次反映其存在使程序出现一些奇怪现象的特性,有理由将其禁用,以免在移 植过程中出现一些不必要的麻烦。 打开 服务界面,找到名为 服务,并选择禁用。该过程中需要用到超级用户权限。 4 的安装 是一个经过千锤百炼、可移植、提供源代码的 C+库,作为标准库的后备,是 C+标准化进程的发动机之一。 由 C+标准委员会库工作组成员发起,其中有些内容有望成为下一代 C+标准库内容。在 C+社区中影响甚大,其成员已近 2000人。 酷、最实用的技术,是不折不扣的“准”标准库。可从。大部分 数(如正则表达式库,文件系统库等)需要链接库。里面有许多具有工业强度的库,如 。 5 在 ,我们只需通过 令安装 先使用 提升到超级管理员权限,使用 看源中库的版本,使用 装, 自动安装依赖库。 t 库的安装 一个跨平台的 C+图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。 完全面向对象的,很容易扩展,并且允许真正地组件编程。 自从 1996 年早些时候, 入商业领域,它已经成为全世界范围内数千种成功的应用程序的基础。 是流行的 面环境 基础, 所有主要的 行版的一个标准组件。 持下述平台: 95、 98、 2000、 11 - 11 平台 S X 基于 统的 植和二次开发 第 6 页 共 25 页 有帧缓冲 (持的 台, E。 6 在 ,使用如下命令进行安装: 中包括一些编译器和一些其他有用的库一并安装。 查看 否正确安装,使用命令 v 显示版本号为 通过如下操作编写 t 程序。 /cd 入如下代码: ! 字符的对话框。 在管理项目方面,我 们需要使用到一个项目 件生成的工具,就是上面的 化了 生成,所以为了 创建一个 需要一个只有几行信息的文件。 以供任何一个软件项目使用,而不用管它是不是用 的,尽管它包含了为支持 发所拥有的额外的特征。 于一个项目文件这样的信息来生成 目文件可以由开发者生成。项目文件通常很简单,但是如果需 要它是非常完善的。不用修改项目文件, 可以为为成项目。 举例来说,如果你在 使用 后你需要把境变量设置为 果你在 使用 需要把境变量设置为 。 在 qt/的每一个目录里面,件。这些设置适用于你要使用 任何 项目,请不要修改它,除非你是一个专家。例如,假如你所有的应用程序都必须和一个特定的库连接,你可以把这个信息添加到相应的 件中。 基于 统的 植和二次开发 第 7 页 共 25 页 一个项目文件是用来告诉 于为这个应用程序创建 需要的细节。例如,一个源文件和头文件的列表、任何应用程序特定配置、例如一个必需要连接的额外库、或者一个额外的包含路径,都应该放到项目文件中。你可以为项目文件添加注释。注释由“ #”符号开始,一直到这一行的结束。模板变量告诉 这个应用程序生成哪种 面是可供使用的选择: 建立一个应用程序的 是默认值,所以如果模板没有被指定,这个将被使用。 建立一个库的 建立一个应用程序的 目文件。 建立一个库的 目文件。 这是一个特殊的模板,它可以创建一个能够进入特定目录并且为一个项目文件生成 且为它调用 7 程的搭建 一个开放源代码的软件 开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它主要由 目、 具项目和 术项目三个项目组成,具体包括四个部分组成 发、 持 C 开发、 来支持插件开发, 是一个开放的可扩展 供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。 许工具建造者独立开发与他人工具 无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。 8 由于 代码是 c+代码,我们需要使用到的是 件,无需做什么操作,下载 时候就选择带有 件的 压后就可以直接使用了。 其中出现问题, 面的按钮有问题,所以我们使用 脚本来启动本名为 容如下: /击 择运行, 会正常启动,而且不会出现之前 界面上出现的问题。 正常启动后,选择 入项目名称: 目生成成功 右击项目文件夹,选择属性,在 添加如下几个路径: /c+/个是 c+的标准库函数的路径) /xn/这个是项目目录,可能 +中默认是包括这个目录的,所以引用工程本身的头文件时,可以写成 #的形式) / 加入 径 移除项目建立时自带的 件,只留下 件。 之后,将 代码文件夹 制到 目文件夹下,并在 目,提示是否将所有 件加入到 目描述文件夹)下,选择是。 删除 件夹,删除 件 中 的 内 容 复 制 到 , 并 删 除 基于 统的 植和二次开发 第 8 页 共 25 页 此, 目建立完成,进入下阶段的编译工作。 译错误的修改 编译错误的修改是一个漫长的过程,在这个过程中不仅要发现问题,解决问题,更要了解到问题的本质,知道以后类似的问题是否会联系到一起,是否还会很好的解决,下面我们就呈现一些编译中碰到典型的错误。 E 代表 代表 代表 代表 执行的动作。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论