分享
 
 
 

把UNIX应用程序移植到Linux

王朝system·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

提示和技巧

介绍

您知道 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++ 运行时库。这些库受 GNU Lesser General Public License 的

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有