ChinaUnix.net 首页 | 博客 | Linux | 论坛 | 人才 | 培训 | 知识库 | 资料 | 读书 | 手册 | 精华 | 下载 | 沙龙 | 搜索
Linux首页 | Linux论坛 | 论坛精华 | 开源新闻 | 技术文章 | 专题专栏 | 新手指南 | 迁移方案 | 产品方案 | 开源项目 | 开源图书 | 软件下载 | 人才招聘 | Linux博客
  搜索

  产品与方案
·中科红旗全面打造现代化邮政体系
·红旗助力“网上审批服务” 推动电子政务
·红旗正版化开创呼和浩特网吧建设新起点
·红旗Linux助信息产业部邮件服务器“快跑”
·中标普华Linux 为电子政务信息化保驾护航
·中标普华Linux助力基金产业
·中标普华Office率先支持UOF标准
·中标普华邮件系统助力西藏政府信息化建设
·红旗Linux助力国库集中支付系统改革
·红旗助中信卫星 掀起GIS通信应用风暴
·红旗软件助力烟草总局 全面建设“数字烟草”
·红旗助力“信访阳光工程”打造畅通信访渠道
·红帽联合FIS发布下一代实时核心银行平台
·红旗助力金盾 打造全无忧出入境信息系统
·红旗Linux全力打造中国邮政总局名址信息库
·爱尔兰证交所从Unix迁移到红帽企业Linux
·一流的意大利银行选择使用红帽企业Linux
·PLUS Finanzservice选择使用红帽企业Linux
·红帽助力TransACT Communications 公司
·法国零售业巨头Lapeyre采用Redhat Linux
·旅游预订网站选择使用红帽企业Linux
·马哈拉施特拉邦政府的红帽解决之道
·美国联邦政府案例
·红帽为慕尼黑展览会提供现代化集群系统
·Yuba郡用开源软件和红帽产品提高了效率
·红帽企业Linux助印度理工建立高性能计算中心
·采用红帽Linux 将系统维护时间缩短了65%
·从UNIX迁移到Linux使Peñoles公司获益非浅
·Hikal公司用红帽企业Linux开展任务关键的ERP项目
·KDE3.5.4新版本发布
·芝加哥商业交易所从Unix向Linux迁移
·南方基金管理有限公司成功案例 Red Hat Linux
·广东北电通讯设备有限公司成功案例
·挪威国家石油公司从UNIX迁移到红帽Linux,成本减半
·中央电视台CCTV动画部案例 Red Hat Linux

  图书

鸟哥的Linux私房菜基础学..


Linux程序设计.第3版


Linux设备驱动开发详解


  下载
·Endian Firewall
·linux kernel(Linux 内核)
·CentOS
·Fedora Core 6
·Scientific Linux
·Slackware 11.0
·Gentoo Linux
·ubuntu-6.10-i386服务器版本
·ubuntu-6.10-amd64服务器版
·ubuntu-6.10-i386桌面版
·ubuntu-6.10-amd64桌面版
·Engarde Linux
您的位置: Linux时代 > 技术文档 > 程序开发 >

将Unix应用程序移植到Linux系统详解

日期:2007-01-31 作者:Linux时代 来自:linux.chinaunix.net


  介绍

  您知道 Linux®现在已是世界第二的服务器操作系统吗?今天,您的应用程序在 Linux 上运行吗?如果不是,那么本文将给您些提示和技巧,在您把应用程序移植到 Linux 的时候为您提供指导。本文依据的是软件工程师的经验,这些工程师来自独立软件供应商(Independent Software Vendors,ISV)和全世界的IBM®实验室,他们参与了许多把应用程序移植到 Linux 的项目。

  首先我们描述 Linux 的特征和它在开发和管理应用程序中的具体价值。接着,我们将回顾重要问题,给出包含移植的主要步骤的移植指南。最后,我们以 IBM ~ zSeries™ 为例,为您演示从一个 Linux 平台移植到另一个平台是多么的容易。(zSeries 这个词指 S/390®和 zSeries。)

  Linux 的特征和价值

  开放性意味着应用程序灵活性:Linux 是真正的开放系统,这使应用程序的可移植性成为现实。在很多情况下,一次简单的重编译就能把应用程序带入 Linux。在优化您的开发和部署平台时,这种快速移植给您真正的灵活性。

  多种硬件支持意味着平台灵活性:Linux 几乎可在所有已知的处理器上运行,无论是 RISC 还是 CISC,32 位还是 64 位。它涵盖全部类型的计算机,从大型机服务器(IBM ~ zSeries)到 PowerPC®、Sun®UltraSPARC、Alpha、PA-RISC 和 Intel 处理器,往下还有个人数字助理和嵌入式系统。特别是所有的 IBM ~ 品牌服务器都支持 Linux。

  源代码的可用性意味着自己动手的灵活性:与多数以二进制形式发行的商业软件不同,Linux 内核的源代码是可以获得的。您可以拿到源代码,然后修改和重编译它,以满足您的特定要求。调试和解决问题或增加新的特性不再依赖任何供应商。您可以自己作出需要的更改,只要它们符合 GNU General Public License 的规定。

  严肃的设计意味着安全性:Linux 安全性是从内核上构建的,由于实现它的代码要接受成千上万的开发者的检验,所以弱点会被及早地发现。Linux 中建有许多路由和防火墙功能。

  流行意味着存在技能:因为 Linux 在大学和学院中流行,所以多数新的毕业生有 Linux 经验。您几乎可以在任何城市的 Linux 用户组中找到该地区能够熟练应用 Linux 的人,而 Web 站点和因特网新闻组仍然是 Linux 使用指南信息和非正式技术咨询的一种宝贵而有效的来源。

  开始前需考虑的重要问题

  移植到 Linux 可能是容易的、简单的和直接的,特别是当您的 UNIX®应用程序的编写遵循公共的开放的标准。如果您认为移植到 Linux 是有吸引力的,那么您需要分析移植中涉及的潜在花费和风险及减小它们的方法。

  迁移会涉及巨额初始投资吗?

  成本 ― 移植将涉及巨大的时间、人员和金钱的初期投入吗?该项目会冻结所有的其它新工作并消耗整个团队的资源吗?需要提前支付大量资金费用和再培训费用吗?这是不是冒着极大风险的提议:一旦开始,要么完成,要么完全失败?

  移植到 Linux 是可管理的 ― 本文的移植指南部分讲述怎样一步一步地移植而每个中间步骤本身是稳定的。这使您能根据您的优先级管理成本、人员和项目。这意味着您可以独立完成每一步,在完成每步后重新估计您的优先级和目标。这样的结果是风险更容易被控制而给您的公司带来的影响更小。

  成本有多大?需要花多少时间?

  花费的时间和金钱 ― 根据和移植有关的因素,全面估计您的应用程序:

  编译器的差异;

  您的代码中与硬件相关的构造(例如字的长度或字节顺序的相关性);

  平台运行时服务;

  构建工具的相关性;

  数据库、联网和消息传递中间件的可用性;

  用户界面的可移植性;

  测试案例和测试环境。

  移植的工作量和复杂程度直接和依赖系统和环境的代码的多少成正比。如果您的应用程序只用标准的语言构造和标准的库,那么移植起来相对容易些。例如, Java®应用程序常常属于这一类。反之,如果您的应用程序是一个 C 程序,其中用到 Solaris 上不符合 POSIX 的服务或依赖在 Linux 上没有的第三方产品,那么移植难度将大大增加。通常,系统测试、配置的测试和软件的安装是重要步骤并且是移植的主要部分。

  我的应用程序还能在原来的 UNIX 平台上运行吗?

  缓解 ― 即使把开发转移到 Linux 后,您仍可以保持原来的平台选择,以满足您的其它市场。移植到 Linux 通常意味着构建工具被 GNU 工具替代,平台相关的线程库被符合 POSIX 的替代。在其它 UNIX 平台上,GNU 工具和库都能用,使您能同时兼顾您原来的平台和 Linux。

  C 和 C++ 应用程序的移植指南

  以下技术讨论来自 Solaris to Linux porting guide(1)(ibm.com/developerworks/linux/library/l-solar/),这些讨论也可被用于其它主流 UNIX 系统。

  Linux 操作系统、构建工具和多数语言的编译器可免费获得并可从因特网上下载。为了开始移植,您将需要提供硬件和开发人员:

  第1步 ― 下载所需的开发工具和 Linux 分发版。

  第2步 ― 改用 Linux 开发工具但仍然运行 Solaris。这种方法使得转变更平缓。

  第3步 ― 熟悉 Linux 操作系统但仍旧在 Sun 硬件上运行。

  第4步 ― 把应用程序移到目标 Linux 平台。

  第1步:下载

  以下列出的是所需的编译器、构建工具和相关的在线文档链接:

  GCC(GNU Compiler Collection)工具套件包含一个 C 编译器和一个 C++ 编译器

  gcc.gnu.org/releases.html

  在线文档

  gcc.gnu.org/onlinedocs/gcc-2.95.2/gcc_toc.html

  Solaris GNU 编译器和 make(gmake)实用程序

  www.sunfreeware.com/

  在线文档

  docs.sun.com/

  gnu.org/manual/make-3.79.1/html_mono/make.html

  Linux 可从以下 Linux 发行商那里获得。

  Caldera www.caldera.com/

  Red Hat www.redhat.com/

  SuSE www.suse.com/

  Turbolinux www.turbolinux.com/

  ― Linux 的 UltraSPARC 版本

  Sun www.sun.com

  第2步:为 Solaris 上的 Linux 构建您的 C/C++ 应用程序

  安装工具 ― 先在 Solaris 上安装 GNU 工具。由于 GNU 编译器和 make 实用程序在 Solaris 和 Linux 上都能用,所以使用这些工具来尝试初次构建您的 Linux 应用程序相对较容易。

  转换 makefile ― 构建您的应用程序时请用 GNU gmake 实用程序,别用 Solaris make 实用程序。根据您的 makefile 中用到的构造,您可能遇到 GNU gmake 实用程序产生的错误消息,因为 GNU gmake 实用程序和 Solaris make 实用程序是有区别的。请用 make 工具文档来帮助找出 makefile 中有问题的地方,然后对 makefile 作出所需的调整。

  编译和调试 ― 当您通过修改您的 makefile、使之能被 gmake 使用后,把 makefile 中调用 C 编译器的名字 cc 改为 gcc,C++ 编译器的名字 CC 改为 g++。然后编译该应用程序。您在构建中所遇到的错误消息,如果有的话,可被分成两类:命令行选项问题和代码问题。

  找出由于 GNU 和 Sun 编译器所接受的命令行选项有所不同而产生的消息。除了几个基本选项(例如“-c”和“-g”),两个编译器能接受的多数选项是不同的。请参阅编译器文档,修改您的 makefile,以适应编译器选项间的区别。

  下一步,您可以处理剩下的与代码有关的错误消息和警告。请参阅编译器文档,理解并解决由于编译器之间的差别而产生的问题。

  第3步:在 Linux 的 Sun UltraSPARC 版本上构建和测试您的应用程序。

  如果所移植的应用程序依赖特定的 UltraSPARC 硬件,那么这是移植过程中的重要阶段。Solaris 开发者有机会熟悉 Linux 环境而不必放弃下层的 UltraSPARC 硬件,也不必修改应用程序中特定于硬件的部分。

  安装 Linux 环境 ― 在 Sun UltraSPARC 上,安装 Linux 和 GNU 实用程序。

  编译并调试运行时 API ― 因为您在构建您的应用程序时用的是 GNU 实用程序,所以您在这步看到的区别限于 Solaris 和 Linux 之间的运行时应用程序编程接口(application programming interfaces,API)的区别。如果您想了解这些区别的更多信息,请参阅运行时接口部分(第 7 页)。对应用程序作出所需的调整。测试 ― 当应用程序被完全地重新构建后,进行彻底的验证测试。

  第4步:在目标 Linux 平台上构建和测试您的应用程序。

  安装 Linux 环境 ― 在目标硬件上安装 Linux 和 GNU 工具。

  复制并重新构建应用程序 ― 把您的源代码树和 makefile 复制到新的 Linux 机器上并重新构建应用程序。如果您没完成第 3 步,那么您可能需要修改应用程序,以适应 Solaris 和 Linux 之间运行时 API 的区别。最后,如果您的应用程序包含任何特定于 UltraSPARC 的代码,那么,请作出所需的修改,以解决那部分代码的问题。

  修改安装例程,以适应目标 Linux 平台。各种 Linux 平台(分发版)的配置和启动文件的位置稍有不同。

  测试 ― 在结束移植前,对移植的应用程序运行彻底的验证测试套件。另外,在目标 Linux 平台上测试配置和安装。

  注意!许可证和版权条款 ― 当您移植到 Linux 并把您的应用程序和开放源代码的库链接时,请注意和这些库有关的许可证和版权。至少来说,您新移植的 C/C++ 应用程序将被链接到 GNU C/C++ 运行时库。

本文被浏览



 相关新闻

Linux系统利用SSH远程控制安全问题2007-01-31 14:33:25
基于μClinux的SoPC应用系统设计详解2007-01-31 14:31:43
如何在Unix/Linux下调试脚本程序2007-01-31 13:35:13
在Linux 系统中紧急情况处理六招2007-01-30 17:58:40
Linux系统中主要的实用数据结构简介2007-01-30 17:53:04
发行版发布:Trustix Secure Linux 3.0.5 RC12007-01-30 09:34:50


 相关评论
关于我们 | 联系方式 | 广告合作 | 诚聘英才 | 网站地图 | 免费注册

Copyright © 2001-2006 ChinaUnix.net All Rights Reserved

感谢所有关心和支持过ChinaUnix的朋友们

京ICP证041476号