选择要使用哪些迁移工具类似于机械领域,移植工程师的 “技术” 工具箱中必须有许多工具,而且知道使用哪个工具可用来最大限度降低移植的难度。IBM Linux on Power SDK 和 IBM Rational Developer for Power Systems 都是独立、完整的集成开发环境 (IDE),可用于简化 Power 服务器上的移植和开发,是开发人员在移植到 Linux on Power 时可以使用的优秀技术工具。 IBM SDK for PowerLinux with Migration Advisor
IBM Software Development Kit for PowerLinux (SDK) 是一个免费、基于 Eclipse 的 IDE。该 SDK 集成了 C/C++ 源代码开发与 Advance Toolchain、链接后优化工具(比如 FDPR)和经典的 LInux 性能分析工具(包括 OProfile、Perf 和 Valgrind)。此外,IBM SDK for PowerLinux 中有一个叫做 Migration Advisor 的工具。Migration Advisor 工具的一个特性是代码检查器 和代码修复 特性,该工具可以分析代码中的 Linux/x86 漏洞,为您提供快速修复代码中的漏洞的选项或者提供手动修复它的建议。例如,下面的转换是从 x86 Linux 移植到 Linux on Power 时一种典型的字节顺序潜在问题。消息 “Cast with endianness issue checker” 表示存在这样的漏洞。
1
2
3
4
5
6
void foo() {
short int val = 0xFF00;
char *char_pointer = (char *) &val;
//This prints 0 in x86 (or x86_64) machines and ff in ppc (or ppc64) machines.
printf("%x\n", *char_pointer);
}
Migration Advisor 使用 Eclipse CDT Code Analyzer (Codan) 源代码分析器来查找 C/C++ 源代码中的潜在迁移问题,比如可能在 x86 和 POWER 服务器上运行时生成不同结果的代码块。要查找源代码中的问题,Codan 会分析 C/C++ 源代码抽象语法树 (AST),查找可能与 Power Architecture 不兼容的代码段。在找到潜在问题时,Migration Advisor 会保存该问题在代码中的位置,并在源代码中的这个特定位置添加一条警告。目前,Migration Advisor 仅兼容 C/C++ 代码。
以下是在 IBM SDK for PowerLinux 中使用 Migration Advisor 的屏幕截图。
图 2. 运行 Migration Advisor ‘Union with Endianness Issues’ 检查器Migration Advisor:快速修复特性
Migration Advisor 还为一些迁移问题提供了快速修复方法,能够将依赖于架构的代码块替换为与 POWER 处理器兼容的指令。可以通过两种方式触发快速修复:右键单击源代码中的警告并选择快速修复选项;或者打开 Migration Advisor Eclipse View,右键单击一个特定问题,然后选择快速修复选项。
Migration Advisor 所提供的快速修复仅适用于:
Linux Cross-platform Tool (LCT)
SDK for PowerLinux 还提供了另一个可以在任何现有的 Intel x86 平台上运行的方便工具。它是一个命令行工具,用于识别应用程序的潜在可移植性。这样,在移植到 Linux on Power 之前,您能够快速了解源代码中的潜在问题。在安装 IBM SDK for PowerLinux 后,可以在该工具的 README 部分中找到 LCT 文档。 IBM Rational Developer for Power Systems
IBM Rational Developer for Power Systems 也提供了一个富桌面集成开发、移植和优化环境,用于多平台开发(IBM i、AIX 或 Linux on Power)。它的特性还包括各种移植工具,比如 Code Analysis 工具、Performance Advisor 工具和 Migration Assistant,类似于 IBM SDK for PowerLinux,这些工具可以检测 32 位到 64 位迁移问题、字节顺序问题,以及其他可能阻碍移植的操作系统问题。 JVM
Java 虚拟机 (JVM) 在所有平台上都以高位优先模式运行,因此常常对处理器架构带来的影响免疫。