将应用程序移植到 Linux 的指南
Malcom Zung(
[email protected]),Linux Application Development Tools,IBM 加拿大有限公司
Brian Thomson(
[email protected]),Linux Application Development Tools,IBM 加拿大有限公司
2001 年 10 月
IBM 成员 Malcom Zung 与 Brian Thomson 将告诉您为什么要将应用程序从 Sun Solaris 移植到 Linux,并给出了一些指导、建议和参考资料以提供帮助。文中还介绍了作者的一个方便的在线工具,您可以用这个工具来检测 API,以了解您的 Solaris 应用程序使用的 API 在 Linux 上的兼容性如何。
随着 Linux 操作系统的逐渐普及,很多 IT 工作室都在考虑如何将已有的应用程序和开发环境移植到 Linux,这不足为奇。不管您是在考虑将 Linux 作为编写代码的另一种可选的部署平台,还是在 Linux 中进行主要的开发工作,移植到 Linux 都不会很难(特别是在您的 UNIX 应用程序按照公共标准编写的情况下)。在这里,我们将为那些正在考虑使用 Linux 的人们指点迷津。
我们知道很多人都听过关于是否移植到 Linux 的争论,如果您也是这样,那么请您直接跳到问题部分,我们将在这一部分开始讨论移植过程中的技术细节问题。
为什么要移植到 Linux?
关于移植到 Linux 有很多颇具说服力的原因,它们都使移植很有吸引力。Linux 的技术和操作特性使它适合很多应用程序,现在可以用到的 2.4 发行版更好地说明了这一点,出自 Linuxcare 的一份白皮书评估了这个版本,其中详细描述了新的发行版中的技术增强(请参阅本文后面部分的参考资料)。
灵活性
Linux 源代码可以免费获得。每个曾经为了调试涉及其他人专有代码的问题而冥思苦想过的人都知道,如果可以真正亲眼看到代码所进行的工作,那么调试工作就容易多了。而且,如果您在里面发现了一个问题,或者想增加一种功能,您就可以修改 Linux,前提是遵守 GNU 通用公共许可证(GNU General Public License)的规定。您不必等到操作系统供应商来为您解决问题。这不只是理论上的优势。象商业软件供应商 SAP 这样的用户已经选择了修改 Linux 源代码的方法,并将这种颇有价值的选择作为支持 Linux 的理由之一。请在 SAP 的 Linux Technology FAQ 中进一步了解 SAP 是如何利用 Linux 的(请参阅参考资料,那里有关于此点的一个链接,还有下面部分提到的很多资源)。
即便您觉得自己不会利用开放源代码开发带来的自由,您还是会从中受益,因为 Linux 能够运行在多种处理器和配置上,从大型机到 PowerPC、SPARC(TM)、Alpha、PA-RISC 和 Intel 处理器,甚至到个人数字助理和嵌入式系统。Linux 还有完整的 TCP/IP 协议栈,包括带有路由和防火墙功能的 IP 版本 6。最新版本的 Linux 在内核支持 HTTP 服务器,实现了高性能、逻辑卷管理和群集功能,而这使它能够处理以前需要超级计算机才能进行的大型计算和搜索。Linux 还支持很多种文件系统,包括具有可恢复性的日志记录文件系统、具有可靠性的独立磁盘冗余阵列(Redundant Array of Independent Disks,RAID),还有很多种可选的与其它系统兼容的文件系统。因为 Linux 的开放开发模型使人们能够添加功能,所以它支持所有这些功能。
稳定性
Linux 在稳定性方面倍受称誉。在 Gartner Group 发布的一份 OS 评估报告中,Linux 受到的评价是“非常好”,与 RISC UNIX 相同,领先于 Windows NT 和 2000(请参阅参考资料)。
安全性
实践证明,安全性需要自底向上构建到系统中,这是它的本质之一。试图在底层不安全的情况下建立安全性,实际上等于幻想恶意用户会对底层缺陷一无所知 — 这种赌博结果通常会失败。Linux 安全性是从内核开始构建的,因为实现它的代码要经过成千上万的开发者的仔细研究,所以任何缺陷都会在早期被查出。Linux 的网络安全性是它特别出色的地方,而且 Linux 本身就内建了大范围的路由和防火墙功能。另一份 Gartner 报告(请参阅参考资料)推荐 Linux 的原因就是它成熟的安全性特点。
可伸缩性
以前,Linux 在支持对称多处理器(symmetric multiprocessor,SMP)系统的方面落后于商业 UNIX 系统,不过随着增强了可伸缩性的 2.4 内核的发行,Linux 现在可以稳定地支持四路 SMP 系统,在 Web 服务工作负载的八路 SMP 配置上也取得了很好的成绩(详见 SPECweb99 基准测试报告)。如果使用群集技术,Linux 还可以处理更大的可分区负载任务。大型的 Linux 群集的示例有 Shell 为了进行地理分析而构建的有 1024 个节点的群集器,还有组成 Google 搜索引擎的 8000 多个 Linux 系统(请参阅参考资料)。
适度的资源需求
尽管 Linux 可以利用大内存和高速处理器,但没有这些条件 Linux 也可以很好地运行。Linux 还可以在 Intel 486 处理器上运行。在用于服务器的情况下,Linux 可以配置为不自动启动 X 服务器,这样就可以节约 GUI(graphical user interface,图形用户界面)系统需要的大量资源。
企业就绪性
通常,最具说服力的是事实,而不是分析。您可以通过研究使用 Linux 构建中枢系统的公司来评判 Linux 的商业就绪性(请参阅参考资料)。
费用
尽管“自由软件”倡导者提醒我们,“自由”是指使用自由而非没有代价,但使用 Linux 不会给预算带来很大压力。您可以用低廉的价格获得 Linux,复制不受既定许可证的限制,也不需支付使用费,而且它附带了一套服务器应用程序和开发工具,这些在其它系统中可能都是需要付费的附件。另外,产品丰富的开放源代码开发社区在不断地开发和发布各类 Linux 软件包,您可以免费(或支付少量费用)获取它们。旧金山的 Bay Area Rapid Transit 系统使用 Linux 作为其 24 小时火车控制工作站,因为选择了 Linux,他们大约节省了 15% 到 20% 的项目预算。
技术和支持服务可用性
随着 Linux 日益普及,更多公司(如 IBM、Linuxcare、RedHat 和 SuSE)开始提供 Linux 支持服务,包括教育、用户分级和系统管理支持以及开发服务。因为 Linux 在学校中很受欢迎,所以很多新毕业的学生都使用过 Linux。您几乎可以在任何城市的 Linux 用户组中找到该地区能够熟练应用 Linux 的人,而 Web 站点和因特网新闻组仍然是 Linux 使用指南信息和非正式技术咨询的一种宝贵而有效的来源。
市场增长
如果您正在开发要再次销售的软件,您可能会有兴趣知道下面的信息 — IDC 估计 Linux 服务器销量到 2004 年将增长 28% 以上(请参阅参考资料)。实际部署的系统的增长率很难估计,可能会更高,因为一套 CD 装或下载的 Linux 都可以合法地安装在很多台机器上。
开发系统的可访问性
Linux 的代码可以在低端商业机器上开发,然后在更大型的系统的特性开始对实现产生影响的时候再迁移到这些更大型的服务器上。Open Source Development Lab 为开放源代码项目提供了对高端 Linux 系统的访问,这些项目将 Linux 扩展到企业级或相关的应用上。与此类似,IBM 的 Linux Community Development System 是这样一种服务,它允许符合要求的申请者访问它自己运行在 IBM 大型机上的 Linux 系统(请参阅参考资料)。
其它人的看法
新闻界和因特网上都有无数文章为那些正在考虑移植到 Linux 的人们提供了其它深入的分析。下面是一个小例子:
“我们使用这个软件在非常短的时间内用很小的开销设置、安装和配置一个功能性 UNIX 系统,这就是 Linux 必须向企业环境提供的。”— Gavin Sherry,Linux and the Enterprise。
“正确的价值取向应该是,能够编写应用程序而不用总是担心系统的结构,或者说系统的体系结构。Linux 因为具有如此开放和标准的特点,所以可以在从手表到超级计算机的每一台机器上运行。”— Sam Palmisano,LinuxWorld 2001 上的发言。
问题
一旦您认定移植到 Linux 有吸引力 — 因为减少的开销、可用的技术、增加的供应商选择,或是快速增长的市场带来的吸引力 — 您就还需要了解其中潜在的代价和风险,以及您如何才能减轻这些影响。下面是一个清单,列出了询问的问题以及相应的回答。
迁移会不会需要一大笔初始投入资金?
当您在考虑将软件开发从一个平台转到另一个平台上时,您是否预先想过这个长期的项目将停止您所有其它的新工作,并占用您整个小组的人力,而且还需要一大笔资金投入和重新培训的费用呢?您是否希望这个项目要么取得巨大价值,要么全无价值,也就是说一旦开始,只能去完成它,否则全盘放弃?在考虑到这些情况时,没有几个项目经理会继续支持这个项目。他们都会正确地分析这个问题,只有您耐心地坚持下去,才可能看到这种长期的项目带来的利润。
幸运的是,从 Solaris 移植到 Linux 并不一定会出现这些问题,而且的确有可能(多数情况下都很值得)避免“大手笔投资”的方法。在本文的迁移指南部分,我们描述了如何按部就班地进行迁移工作,将开销均匀分布并减少风险,因为中间点是不变的(您可以随意停留在每个点上)。这意味着您可以独立地提交每个步骤,并在每次提交后重新评估优先权和目标。这样就更容易控制对您企业造成的风险和影响了。
开销会有多少,还有会花费多长时间?
只有对应用程序进行全面的迁移评估,才能回答这个问题。其中包括下面几个相关的因素:
编译器语言
代码中与硬件相关的因素(如字长或字节尾附属物)
平台运行时服务
构建工具附属物
可用的数据库、联网条件和消息传递中间件
用户界面可移植性
测试案例和测试环境
移植工作的规模和复杂性将与系统和环境相关的代码直接成正比。如果应用程序只使用标准语言构件和标准库,而且并不一定要在 SPARC 处理器上的 Solaris 下运行,那么移植就相对容易一点。举例来说,Java 应用程序通常就属于这个范畴。另一方面,如果应用程序是不使用 Solaris 上的 POSIX 服务的 C 程序,或者依赖于 Linux 上没有的第三方产品,那么移植工作就困难多了。
请参阅迁移指南进一步了解迁移工作的评估。还有,本文的迁移工具和外包部分为您介绍了一些专家,他们可以帮助您评估应用程序的可移植性。
我的应用程序可以继续在 Solaris 上运行吗?
如果您不希望在 Linux 和 Solaris 之间进行选择的话,就不要选择!当您移植应用程序时,很多情况下您都是在将不可移植的方法和附属物替换成可移植性更好的东西。您会将 Solaris 构建工具替换成 GNU 工具,并使用与 POSIX 相容的线程库代替 Solaris 中对应的库。因为这些工具和接口在 Solaris 上也能找到,所以您可以继续自由地使用 Solaris,甚至在将开发平台移植到 Linux 之后继续把握 Solaris 市场。
迁移指南
下面这种直截了当的方法将允许您的开发小组逐步地进行从 Solaris 到 Linux 的转变。您可以将移植工作与主要开发工作一同进行,从而尽可能减少中断。如果实行得恰当,您的应用程序在迁移过程结束时将能够一样很好地适用于 Linux 和 Solaris。
多数语言的 Linux 操作系统、构建工具和编译器都可以免费获取,您可以从因特网下载它们。您只需要提供硬件和开发人员,就可以开始移植了。
对于 C 和 C++ 应用程序来说,我们建议在步骤 1 中继续运行 Solaris,同时转到 Linux 开发工具。这种方法允许您更细地逐步转换。您可以选择进行步骤 2,在这个中间阶段继续在 Sun 硬件上运行,同时慢慢熟悉 Linux 操作系统。最后,步骤 3 会将应用程序从 Sun 硬件中脱离出来。
如果是移植 Java 应用程序,您可以直接进行步骤 3 — 一般的 Java 应用程序很少或根本不依赖于底层机器硬件。如果是移植 Fortran 应用程序,您也可以直接进行步骤 3。
步骤 1:在 Solaris 上用 GNU 工具(GCC/gmake)构建 C/C++ 应用程序
下面的参考资料将有助于您执行这个步骤:
Sunfreeware.com 的 Solaris GNU 工具
Make 工具文档
GNU make
Sun make
编译器文档
GCC
Sun C, Sun C++
GCC(GNU Compiler Collection)工具套装包括一个 C 编译器和一个 C++ 编译器。因为 Solaris 和 Linux 中都有 GNU 编译器和 make 实用程序,所以要用这些工具开始构建应用程序相对来说比较容易。首先,请您用上面的链接下载 GNU 工具,并将它们安装在 Solaris 上。然后,请您试着用 GNU gmake 实用程序(而不是 Solaris make 实用程序)来构建应用程序。因为 GNU gmake 实用程序与 Solaris make 实用程序有所不同,所以根据您的 make 文件中使用的构件,您会碰到 GNU gmake 实用程序生成的一些错误消息。请使用上面的 make 工具文档链接来帮您识别 make 文件中的问题区域,并相应地调整 make 文件。
一旦您将 make 文件修改为使用 gmake,请在 make 文件中将被调用的 C 编译器的名称从 cc 改为 gcc,并将 C++ 编译器的名称从 CC 改为 g++。然后重新构建应用程序。您在构建过程中会碰到的错误消息(如果存在的话)可以分为两类:命令行选项问题和代码问题。请辨别出那些由于 GNU 和 Sun 编译器接受的命令行选项中有所区别而产生的消息。除了少数几个基本选项(如“-c”和“-g”)之外,编译器接受的多数选项都不同。Red Hat 的 Solaris-to-Linux Porting Guide 提供了对这些区别的一个很好的总结。请使用上面的编译器文档链接来修改您的 make 文件,以弥补编译器选项中有区别的不足。
下面,您就可以处理剩下与代码相关的错误消息和警告信息了。处理这些消息的一种简单的方法是将它们捕获在一个文件中,并挨个检查。请使用上面的编译器文档链接来了解和处理编译器之间不同的问题。本文的迁移工具和外包部分给出了一个公司列表,这些公司可以帮助您在应用程序中解决那些由于编译器不同而产生的问题。
在移植到 Linux 和将应用程序链接到开放源代码库时,请注意与这些库相关的许可证和版权。您新移植的 C/C++ 应用程序至少将被链接到 GNU C/C++ 运行时库。这些库受 GNU“copyleft”许可证的保护。如果您正在移植的软件有专有属性,而且您打算在用 GNU 工具构建该软件之后马上出售它,那么您最好谨慎地全面理解 GNU 通用公共许可证和 GNU 次通用公共许可证(请参阅参考资料)中规定的条款和条件。一旦您的软件被链接到由这些许可证保护的库上,GNU 许可证中的某些条款和条件就将沿用到您的软件上。
步骤 2:(可选的)在 SPARC 的 Linux 上构建和测试应用程序
下面的资源将有助于您执行这个步骤:
SPARC 的 SuSE Linux(出版社发行版)
UltraSPARC(TM) 平台的 Linux
有一种不常见的情况,那就是被移植的应用程序有对 SPARC 硬件特定的附属物,这时步骤 2 就变成移植过程中重要的中间阶段了。它使 Solaris 开发者能够在不放弃底层 SPARC 硬件和不修改应用程序中特定于 SPARC 的部分的前提下熟悉 Linux 环境。
请通过上面的链接之一来获取可以在您的 Sun 硬件上运行的 Linux 版本。然后安装操作系统,使用所提供的 GNU 工具重新构建应用程序。因为您在步骤 1 中使用 GCC 构建了应用程序,所以在步骤 2 中将碰到的区别将被限制到 Solaris 和 Linux 之间的运行时应用程序编程接口(application programming interface,API)的区别。请参阅运行时接口部分以进一步了解关于这些区别的信息。如果需要,请对应用程序作出调整。一旦应用程序完全被重新构建,请对其实施一个完整的有效性测试。
步骤 3:在 Linux 上为其它硬件构建和测试应用程序
下面的资源将有助于您执行这个步骤:
Red Hat
SuSE
Turbolinux
在迁移过程的最后一个步骤中,首先请获取并在您选择的目标硬件上安装 Linux。可以直接使用 Linux 的服务器有 IBM 基于 Intel-IA32 的产品系列(包括 NetVista、IntelliStation、Netfinity)和新的 IBM eServer xSeries。IBM pSeries 和 zSeries 也可以使用 Linux(请参阅参考资料)。您可以低价购得或免费下载流行的用于 Intel/x86 的 Red Hat Linux 分发版,而且它在几乎任何一台基于 Intel 的 PC 机上都很容易安装和设置。SuSE 提供支持 IBM pSeries 和 zSeries 的 Linux 分发版。还有,您一定要安装将使用的编译器和工具。
下面,请将原始树(source tree)和 make 文件复制到新的 Linux 机器,然后重新构建应用程序。如果您没有完成步骤 2,那么您就可能需要修改应用程序使其适应 Solaris 和 Linux 之间运行时 API 中的区别。请参阅运行时接口部分以了解其它信息。最后,如果应用程序包含任何特定于 SPARC 的代码,请按所需进行修改,来解决这几部分代码中的问题。在项目结束前,对移植的应用程序进行一套整体的验证测试。
Java 应用程序
将用 Java 编写的应用程序开发过程从 Solaris 转到 Linux 非常简单。Solaris SPARC/x86 和 Linux x86 都可以使用 Sun 的 Java 2 Platform 标准版。对于那些目前正在使用 Sun 的 Forte(TM) for Java Community Edition 集成开发环境(integrateddevelopment environment,IDE)而且还将继续使用下去的开发者来说,在 Linux 中也可以使用这个 IDE,而且可以免费下载。
IBM 还提供了 Java 2 Developer Kit for Linux(请参阅参考资料),它包括一个重新设计过的 Java 虚拟机(Java Virtual Machine,JVM),该虚拟机增强了即时编译功能。另外,IBM 倍受称誉的 VisualAge for Java IDE 在 Linux 中也可以使用。它的入门版是免费的,您可以从 VisualAge Developer Domain Web 站点(请参阅参考资料)下载。
GCC 工具套装中包括一个 Java 编译器(GCJ),它可以将 Java 源文件编译为类文件(字节码),或者直接编译为本地机器码。
因为不管 JVM 运行在什么操作系统上,它都将接受相同的字节码,所以您可以选择在一个操作系统上编译 Java 源文件,然后在另一个操作系统上运行编译得到的类文件。举例来说,如果 Linux 是您主要的开发平台,那么您在 Linux 上创建的 Java 类文件在 Solaris 或其它可以使用兼容 JVM 的平台上也可能一样运行良好(请参阅参考资料)。
Fortran 应用程序
如果您的 Solaris Fortran 应用程序与 f77 一致,那么您就可以使用 GCC Fortran 77(g77)编译器(请参阅参考资料)来编译应用程序。GNU Compiler Collection 套装包括 g77 编译器。
如果您的应用程序目前是用 Sun 的 f90/f95 编译器构建的,那么您就需要购买一个商业 Fortran 编译器。您可以通过下面的资源来获取 Fortran 90/95 Linux 工具:
来自 Absoft Development Tools 的 Pro Fortran 7.0(ANSI/ISO Fortran 95)编译器和调试器
来自 The Portland Group 的 F77、F90 和 HPF 编译器、调试器以及分析器
来自 Veridian System 的 VAST/f90 Fortran 编译器
运行时接口
尽管大多数运行时接口在 Linux 和 Solaris 上都是通用的,有一些地方还是有区别存在。如果您的应用程序利用 Solaris 上可用的接口做了任何工作,而该接口在 Linux 上不可用,或者说在 Linux 上可用的不是同一个接口,那么就要对这种使用作出修改才能正确地构建应用程序。下面列出了不同之处。
系统调用和 C 库
Solaris 内核提供逻辑卷支持、文件的 ACL(access control list,访问控制列表)管理和系统审计日志功能。对于这种功能,可用的 Linux API 与 Solaris 上的 API 有所不同。Linux 上缺省条件下不支持的还有 STREAMS。我们需要对使用 STREAMS 进行联网的应用程序作出修改,才能使用 POSIX 套接字作为替代。
还有,Linux 上可用的很多 Solaris API 都有不同的返回和参数类型,或者在不同的头文件中声明。然而,这些区别通常都是次要的,一般不需要在应用程序中对代码作出改动。
检测 API 在 Linux 上的兼容性
如果您想得到一份说明 Solaris 应用程序使用的特定 API 与 Linux 的兼容程度的报告,那么请使用 developerWorks 的从 Solaris 到 Linux 的移植工具。
C++ 库
Solaris Forte 6 C++ Compiler 包括三个类库:-compat=4 的复数、经典 io 流和标准 C++ 库(它包括标准复数和 io 流)。GCC 只包括标准的 C++ 库。如果被移植的应用程序使用 -compat=4 复数库或经典 io 流库,那么您就需要修改应用程序,以使用标准 C++ 库中包含的这些库的标准版。这样修改还有其它好处,那就是能够改进应用程序的可移植性。
数学库
Solaris 数学库包括 ASCII 编码十进制数的转换函数。Linux 数学库中没有这种功能。
X 库和视窗管理器
X11R6 X Server 和 Xlib、Xt 一样,在 Linux 上都可以使用。Motif 可以从 The Open Group(请参阅参考资料)以 Open Motif 的形式获得,它在 Linux 上还是免费发布的。在 Linux 中,人们经常用 LessTif(请参阅参考资料)来代替 Motif,它实际上是开放源代码 Motif 的克隆版本。
桌面:CDE 对 GNOME/KDE
通用桌面环境(Common Desktop Environment,CDE)是缺省的 Solaris 桌面,它并不包括在通用的 Linux 发行版中。对于需要 CDE 的应用程序和更喜欢这种特殊的图形用户界面(graphical user interface,GUI)环境的用户来说,可以从 Xi Graphics(请参阅参考资料)以他们的 DeXtop 产品的形式获得 CDE 的 Linux 版本。在 Linux 上运行 DeXtop 使 Solaris 用户处于熟悉的 GUI 环境中,这能够使移植到 Linux 引起的转换轻松很多。
DeXtop 要求 Accelerated-X Linux X-Server 同样来自 Xi Graphics。尽管 XFree86 Linux X-Server 可以设计为能使用 DeXtop,但 Xi Graphics 并不提供对在 XFree86 上运行 DeXtop 的官方支持。
线程/LWP(Light Weight Process,轻量级进程)支持
Solaris 支持 POSIX 线程和特定于 Solaris 的线程模型。如果被移植的应用程序使用特定于 Solaris 的线程 API,那么您最好将应用程序修改为使用 POSIX 线程。Linux 上支持 POSIX 线程,而且它更具可移植性。
对于要移植到 Linux/Alpha 的人们来说,另一种选择是使用由 Compaq 开发的与 Solaris 兼容的 Threads Library for Linux/Alpha。您可以在 Compaq 的 Linux Affinity Web 页(请参阅参考资料)了解关于这个开放源代码包的详细信息。
进程管理:/proc 文件系统
/proc 伪文件系统为访问内核数据结构提供了一种便捷的方法。在 Solaris 上,/proc 包含关于活动进程和线程的信息,并提供控制这些进程和线程的接口。Solaris 上的 /proc 控制接口一般由调试者用来跟踪程序执行情况。在 Linux 上,/proc 并不提供进程控制接口。要控制进程以便在 Linux 上进行调试,请使用 ptrace() API 代替 /proc。
其它注意事项
系统管理
总的来说,管理 Linux 与管理任何其它 UNIX 操作系统都几乎一样。在某些具体的命令和任务上有一些区别,IBM 和 UNIXGuide 已经发布了比较图,总结了这些区别,其中不仅包括 Solaris 和 Linux 之间的区别,还包括 AIX 和其它版本的 UNIX 之间的区别(请参阅参考资料)。有经验的 Solaris 系统管理员不必花费太大气力就能够完全适应 Linux。
源代码管理
对于目前正在使用 Solaris 上的 Sun Forte TeamWare 或者 SCCS(Source Code Control System,源代码控制系统)并希望继续使用 SCCS 这种风格的源代码管理系统的开发者来说,他们可以试着使用 GNU CSSC(Compatibly Stupid Source Control),开放源代码 SCCS 的克隆版本。CVS(Concurrent Versions System,并发版本系统,请参阅参考资料)是 Linux 上更常用而且倍受推崇的源代码管理系统。
Solaris 和 Red Hat Linux 还可以使用 Rational ClearCase 软件配置管理解决方案(请参阅参考资料)。
其它第三方工具、实用程序和库
Solaris 上有很多常见、流行的第三方工具、实用程序和库,它们都可以在 Linux 上使用。鉴于 Linux 的日益普及,支持 Linux 的第三方供应商的数目每天都在增长(请参阅参考资料):
Rational Rose 和其它 Rational 产品在 Solaris 和 Linux 上都可以使用。
与 GCC 可在 Solaris 和 Linux 上使用一样,Rogue Wave SourcePro C++ 库可以在 Forte/Solaris 上使用。
Trolltech Qt C++ GUI 框架在 Solaris 和 Linux 上都可以使用。
64 位计算
Red Hat 和很多其它发行商为 Compaq/DEC Alpha 提供了一种 64 位版的 Linux。您可以在 AlphaLinux Web 站点上了解关于这种 Linux 的其它信息。64 位的 Solaris 和 64 位的 Linux/Alpha 都使用 LP64 数据模型,它能够带来很好的兼容性。
不久,Intel Itanium(TM) IA-64 处理器也能使用一种 64 位版的 Linux。您可以在 IA-64 Linux Project Web 站点了解关于这种 Linux 的更多信息。一种支持 IBM 64 位 PowerPC 体系结构的 Linux 也在开发之中。
请注意,尽管 SuSE Linux/UltraSPARC 的内核运行在 64 位的模式中,但 SuSE Linux/UltraSPARC 目前并不支持 64 位的用户空间应用程序。
端(Endian)格式
Sun SPARC 和 UltraSPARC 处理器以大端(Big Endian)格式存储整数。如果您希望将应用程序移植到小端(Little Endian)版本的 Linux(如 Linux/Intel)上,那么您就必须解决应用程序中任何与端格式有关的问题,应用程序才能够正确运行。您也可以选择让应用程序使用 Linux/PowerPC、Linux/zSeries 或 Linux/SPARC,它们都是 Linux/Intel 之外的大端平台。
教育
喜欢自学的人们可以在因特网上找到很多 Linux 信息。其中有两个不同起点都很好,那就是 IBM 的 developerWorks Linux 专区上的教程和 IBM 的 Linux、UNIX 和开放源代码课程目录,其中包括基于 Web 的 Linux、UNIX 和开放源代码项目的课程。课程目录包括 Linux 介绍,Linux 上的 DB2、zSeries 和 S/390 上的 Linux、Perl 以及开放源代码。您还可以找到 Linux Professional Institute 证书和 Red Hat 证书课程,以及课程向导,还可以找到课程顾问,他可以帮助您根据您需要的技术来选择课程。
迁移工具和外包
MigraTEC 这家公司专门开发在平台之间迁移应用程序的工具。MigraTEC 的移植工具套装包括 Migration WorkBench,它可以在您的应用程序中找出在移植过程中可能需要修改的特定代码部分。WorkBench 还包括一个完整的从 Solaris 到 Linux 的 API 映射,工具可以用它来检测应用程序调用的 Solaris API 与 Linux 的兼容性。
ParaSoft 的自动 C/C++ 编码标准执行工具名为 CodeWizard,它现在包括一个被称为 RuleWizard 的功能,该功能允许用户创建定制编码规则。您可以使用 CodeWizard 和 RuleWizard 来创建定制内部工具来协助迁移工作,并维护可移植性。
对于希望外包整个迁移工作的那些人来说,他们可以与 IBM Global Services、MigraTEC 和 Sector7 这样的公司签订和约,让这些公司来完成整个移植任务。IBM Global Services 最近建立了一种全面的 Linux 服务业务,包括迁移、顾问、规划、教育和支持。
参考资料
请在 Linuxcare 的一份资料中了解 Linux 2.4 的技术增强。
GNU General Public License 和 GNU Lesser General Public License 让任何人都可以查看和改进 Linux 源代码。
请在 SAP 的 Linux 技术常见问题解答了解 SAP 是如何利用 Linux 的。
Linux 可以在很多系统上运行,从大型机一直到个人数字助理和嵌入式系统。
Gartner Group 在一份 OS 评估报告中对 Linux 的评价是“非常好”。
这份 Gartner 报告推荐 Linux 的原因是 Linux 具有成熟的安全性。
请看看有多少使用 Linux 构建中枢系统的公司,以此评判 Linux 的商业就绪性。
Linux 的八路 SMP 配置在 SPECweb99 中的结果非常好。
大型 Linux 群集器有 Shell 构建的 1024 个节点的群集器,还有 8000 个节点的 Google 搜索引擎。
请看看 Bay Area Rapid Transit 系统是如何使用 Linux 节省项目费用的。
据 IDC 估计,Linux 服务器销量到 2004 年将增长 28% 以上。
开发者们可以从 Open Source Development Lab 和 IBM 的 Linux Community Development System 访问高端 Linux 系统。
请在 IBMeServer 开发者园地进一步了解 Linux 在 IBM xSeries、pSeries 和 zSeries 上的情况。
Java 工具有 Sun 的 Java 2 Platform 标准版和 Forte(TM) for Java Community Edition IDE,还有 IBM Developer Kit for Linux 和 VisualAge for Java IDE 等。
请从 VisualAge 开发者园地 Web 站点下载 IBM 的各种 VisualAge 工具。
GCC 套装还包括一个 Java 编译器(GCJ)。
您可以从 GCC(g77)、Absoft Development Tools、The Portland Group 和 Veridian Systems 获取 Fortran 编译器。
Linux 视窗工具包中包括 Open Motif 和 LessTif。
Xi Graphics 为 Linux 开发了一个 CDE。
Compaq 的 Linux Affinity Web 页描述了一种与 Solaris 兼容的 Linux 线程库。
请参阅由 IBM 发布的和由 UNIXguide 发布的系统管理任务比较图。
源代码管理系统有 GNU CSSC 和 CVS。
来自 Rational 的 Linux 产品有 Rational Rose 和 Rational ClearCase。
Linux 的第三方运行时库有 Rogue Wave SourcePro C++ 库和 Trolltech Qt C++ GUI 框架。
请在 AlphaLinux 和 IA-64 Linux Project Web 站点查找关于 64 位 Linux 的信息。
要了解 Linux 教育信息,请浏览两个不同的站点,那就是 IBM 的 developerWorks Linux 专区上的教程和 IBM 的 Linux、UNIX 和开放源代码课程目录。
您可以从 IBM Global Services、MigraTEC 和 Sector7 获得迁移服务。ParaSoft 的 CodeWizard 工具也可以用来协助迁移工作。
请在 developerWorks Linux 专区上两星期一次的“LTC 公告”中和 Linuxat IBM Web 站点上进一步了解 IBM 在 Linux 方面的进展如何。
请在 developerWorks 上浏览更多 Linux 参考资料。
请在 developerWorks 上浏览更多开放源代码参考资料。
关于作者
Malcom Zung 目前的工作是推广 Linux 上的应用程序开发。Malcom 参与的其它项目还包括 IBM Distributed Debugger 和 IBM C Compiler。Malcom 的工作地点位于安大略省马克姆镇的 IBM 加拿大实验室。您可以通过
[email protected] 与 Malcom 联系。
Brian Thomson 负责领导在 IBM 全球推广 Linux 上的应用程序开发。Brian 以前担任过 IBM 应用程序开发部门很多项目的首席设计师。Brian 的工作地点位于安大略省马克姆镇的 IBM 加拿大实验室。您可以通过
[email protected] 与 Brian 联系。