复制并重新构建应用程序 — 把您的源代码树和 makefile 复制到新的 Linux 机器上并重新构建应用程序。如果您没完成第 3 步,那么您可能需要修改应用程序,以适应 Solaris 和 Linux 之间运行时 API 的区别。最后,如果您的应用程序包含任何特定于 UltraSPARC 的代码,那么,请作出所需的修改,以解决那部分代码的问题。
修改安装例程,以适应目标 Linux 平台。各种 Linux 平台(分发版)的配置和启动文件的位置稍有不同。
测试 — 在结束移植前,对移植的应用程序运行彻底的验证测试套件。另外,在目标 Linux 平台上测试配置和安装。
警告!许可证和版权条款 — 当您移植到 Linux 并把您的应用程序和开放源代码的库链接时,请注意和这些库有关的许可证和版权。至少来说,您新移植的 C/C++ 应用程序将被链接到 GNU C/C++ 运行时库。这些库受 GNU Lesser General Public License 的保护。如果您移植的软件是专利性质的并且您想在用 GNU 工具构建该软件后出售它,那么谨慎的作法是完全理解 GNU General Public License 和 GNU Lesser General Public License(www.gnu.org/licenses/licenses.html)中列出的条款和条件。如果您的软件和受 GNU 许可证保护的库链接,那么 GNU 许可证中的某些条款和条件将对您的软件也适用。
Java 应用程序的移植指南
第 1 步 — 下载所需的开发工具。
第 2 步 — 在目标 Linux 平台上使用应用程序。
第 1 步:下载
把用 Java 写的应用程序的开发从 Solaris 移到 Linux 是很简单的。您移植任务所需的工具有:
Java 2 Developer Kit 的 Linux 版包括重建的 Java 虚拟机(Java Virtual Machine,JVM),该 JVM 有改进的即时(just-in-time)编译功能 ibm.com/developerworks/java/jdk/linux130/
GCC 工具套件包含一个 Java 编译器(GCJ)gnu.org/software/gcc/java/
第 2 步:在目标 Linux 平台上使用应用程序
无论 JVM 运行在什么操作系统上,JVM 接受同样的字节码,所以您可以选择在某个操作系统中编译 Java 源文件,然后在另一操作系统中运行生成的类文件。例如,如果 Linux 是您的主要开发平台,那么您在 Linux 上创建的 Java 类文件能同样好地运行在 Solaris 或其它有兼容 JVM 的平台上。
运行时接口
尽管 Linux 和 Solaris 的绝大部分运行时接口是相同的,但有些地方还是有区别的。在您的应用程序中,每处用到 Linux 上没有或不完全相同的 Solaris 接口的地方都需要被修改,否则您的应用程序无法被正确地构建。以下列出的是有区别的地方。
系统调用、C 库和 C++ 库
API 差别 — Solaris 内核提供逻辑卷支持、文件的访问控制表(access control list,ACL)的管理和系统审计日志功能。Linux API 中的这些功能(如果有的话)与 Solaris 上的并不相同。还有,在缺省情况下,Linux 不支持 STREAMS。在网络中用到 STREAMS 的应用程序需要改用 POSIX 套接字。另外,不少 Linux 上也有的 Solaris API 使用不同的返回和参数类型,或在不同的头文件中声明。但是,这些差别往往不大,通常不需要在应用程序中修改代码。