阅 读 文 章

Solaris到Linux应用的移植

[来源:网上转载 () | 作者:网友() | 时间:2007-07-07 | 浏览:人次 ]

  移植需要考虑的几个相关的因素:

  o 编译器语言

  o 代码中与硬件相关的因素(如字长或字节尾附属物)

  o 平台运行时服务

  o 构建工具附属物

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

  o 用户界面可移植性

  o 测试案例和测试环境

  移植工作的规模和复杂性将与系统和环境相关的代码直接成正比。如果应用程序只使用标准语言构件和标准库,而且并不一定要在 SPARC 处理器上的 Solaris 下运行,那么移植就相对容易一点。举例来说,Java 应用程序通常就属于这个范畴。另一方面,如果应用程序是不使用 Solaris 上的 POSIX 服务的 C 程序,或者依赖于 Linux 上没有的第三方产品,那么移植工作就困难多了。当您移植应用程序时,很多情况下您都是在将不可移植的方法和附属物替换成可移植性更好的东西。您会将 Solaris 构建工具替换成 GNU 工具,并使用与 POSIX 相容的线程库代替 Solaris 中对应的库。因为这些工具和接口在 Solaris 上也能找到,所以您可以继续自由地使用 Solaris,甚至在将开发平台移植到 Linux 之后继续把握 Solaris 市场。

  步骤 1:在 Solaris 上用 GNU 工具(GCC/gmake)构建 C/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”)之外,编译器接受的多数选项都不同。下面,您就可以处理剩下与代码相关的错误消息和警告信息了。处理这些消息的一种简单的方法是将它们捕获在一个文件中,并挨个检查。请使用上面的编译器文档链接来了解和处理编译器之间不同的问题。本文的迁移工具和外包部分给出了一个公司列表,这些公司可以帮助您在应用程序中解决那些由于编译器不同而产生的问题。 在移植到 Linux 和将应用程序链接到开放源代码库时,请注意与这些库相关的许可证和版权。您新移植的 C/C++ 应用程序至少将被链接到 GNU C/C++ 运行时库。这些库受 GNU“copyleft”许可证的保护。如果您正在移植的软件有专有属性,而且您打算在用 GNU 工具构建该软件之后马上出售它,那么您最好谨慎地全面理解 GNU 通用公共许可证和 GNU 次通用公共许可证(请参阅参考资料)中规定的条款和条件。一旦您的软件被链接到由这些许可证保护的库上,GNU 许可证中的某些条款和条件就将沿用到您的软件上。

  步骤 2:(可选的)在 SPARC 的 Linux 上构建和测试应用程序

  有一种不常见的情况,那就是被移植的应用程序有对 SPARC 硬件特定的附属物,这时步骤 2 就变成移植过程中重要的中间阶段了。它使 Solaris 开发者能够在不放弃底层 SPARC 硬件和不修改应用程序中特定于 SPARC 的部分的前提下熟悉 Linux 环境。请通过上面的链接之一来获取可以在您的 Sun 硬件上运行的 Linux 版本。然后安装操作系统,使用所提供的 GNU 工具重新构建应用程序。因为您在步骤 1 中使用 GCC 构建了应用程序,所以在步骤 2 中将碰到的区别将被限制到 Solaris 和 Linux 之间的运行时应用程序编程接口(application programming interface,API)的区别。

论坛热门帖子: [lch203] 写得蛮好的linux学习笔记(10-21)
[黑马制造] 学习java的30个目标(10-19)
[笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19)
[udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18)
[沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18)
TAG标签: 移植 应用 Linux 应用程序 使用 Solaris GNU 工具 可以

最新评论 共有0位网友发表了评论

发表评论

评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名:(注册)
密码:
验证码:
匿名发表

网站地图友情连接交流论坛网站投稿广告服务联系我们留言本站长统计
Some rights reserved: www.chmhome.com, 鄂ICP备07010232号 E-mail:chinakafei@live.com,QQ:552766
中国咖啡技术网(Chmhome):国外编程技术书籍,中文编程手册,经典编程文章,交流技术,技术软件下载,计算机论文,毕业论文.