移植注意事项

本节描述了几个常见的研究领域,这些研究可以加快将基于 UNIX 的应用程序移植到 Linux 平台上。

移植应用程序以在另一个平台上运行涉及平台和目标平台。在写任何代码之前,至少应该考虑以下问题:移植到目标平台会发生什么变化?真正的移植只涉及更改硬件和操作系统。

理论上,写得好的程序不依赖于特定于平台的相关性,它们遵循业界标准(例如,POSIX)并且符合标准语言定义且没有使用非标准的语言扩展,除了重新编译和调试之外只需要进行少量的额外工作就可以将它们很方便地移植到新的操作系统。当源平台是相当新的基于 UNIX 的操作系统时,可限制更改以便更符合业界标准或同一标准的更新版本。如果应用程序已在 Linux 系统上运行,则可选择重新编译该应用程序并以本机方式运行它。许多应用程序无须进行更改就可以重新编译和运行。

而且,使用不同的符合标准的编译器编译应用程序可以消除源代码中由于在语言标准实现方面的差别而导致的瑕疵。结果是应用程序更健壮。

在移植过程中产生的问题可归类为内部和外部可移植性问题。内部可移植性问题与编程语言固有的隐性假设有关。例如,C 程序假设整数中的特定字节顺序、整数的一组相对大小和结构中字段的特定布局。内部可移植性与程序代码与硬件之间的关系有关。此类移植问题受程序员控制。

另一方面,外部可移植性问题与程序采用的接口的语义、传递至程序或从程序传递来的自变量和返回值的选择有关。它们与程序所依赖的库的系统调用以及程序调用的但在程序外部的代码有关。如果程序使用标准化的外部接口,则程序员可控制外部可移植性。 IBM Copyright 2003