编译器
在 Linux on POWER 上可以使用以下的编译器:
" IBM XL C/C++
" IBM XL Fortran
" GNU 编译器集(GCC)
IBM XL C/C++ Version 7.0 是一种高性能的编译器,可以在 RHEL4 和 SLES9 中使用,它们改进了基于 POWER5 处理器系统的性能。-qarch 和 -qtune 选项用来对各自的架构进行优化。例如,要对 POWER5 平台进行优化,就可以使用下面的选项: -qarch=pwr5 和 -qtune=pwr5。
IBM XL C/C++ 编译器中的 -qaltivec 选项用来启用 IBM eServer BladeCenter JS20 中 PowerPC 970 和 970FX 处理器的 VMX 特性。
GCC 中包含了很多不同语言的编译器。从 3.2 到 3.3 有很多改进,包括 POWER 处理器对它的 C 编译器 gcc 的特有优化。
-mcpu=power5 和 -mtune=power5 标记现在都可以支持了,这样可以生成只用于 POWER5 架构的指令。还有一些对 IBM PowerPC 970 和 970FX 处理器的 VMX 向量扩展,这可以提高向量化代码的性能。
由于 IBM XL C/C++ 编译器使用了更多的 POWER5 高级硬件特性,它为所编译的程序提供了更好的性能,不过使用 gcc 编译的程序的可移植性更好。
下表对 GCC 和 XL C/C++ 中常用的编译选项进行了比较:
表 6. GCC 和 XL C/C++ 中常用的编译选项
GCC | XL C/C++ | 说明 |
-v | -v, -V, -# | 打开详细模式 |
-m32, -m64 | -q32, -q64, 或设置 OBJECT_MODE 环境变量 | 创建一个 32 位或 64 位的对象。GCC 64 位的编译器位于 /opt/cross/bin 中 |
-fsyntax-only | -qsyntaxonly | 只检查语法,而不生成对象文件 |
-fpic | -qpic=small | 生成共享库中使用的 Position-Independent Code。在 XL C/C++ 中,Global Offset Table 的大小不超过 64 Kb。如果指定 –qpic,而无任何子选项,则假设 -qpic=small。如果指定了 -qmkshrobj 编译器选项,则启用 -qpic 选项 |
-fPIC | -qpic=large | 允许 Global Offset Table 大于 64 Kb |
-pthread | -qthreaded or _r invocation mode | 创建在多线程环境中运行的程序 |
-fno-rtti | -qnortti | 对于异常处理和 typeid 和 dynamic_cast 操作符的使用,禁止生成运行时类型 –qrtti 识别(RTTI)。在 XL C/C++ 中,默认值为 -qnortti |
-static | -qstaticlink | 使用这个选项生成的对象将无法与共享库进行链接 |
-static-libgcc | -qstaticlink=libgcc | 指示编译器与 libgcc 的静态版本链接 |
-shared | –qmkshrobj | 指示编译器生成共享对象 |
-shared-libgcc | -qnostaticlink=libgcc | 指示编译器与 libgcc 的共享版本链接 |
-Wl,-rpath | -Wl,-rpath 或 –R | 传递用冒号分隔的目录列表,用它来指定运行时链接程序搜索的目录 |
-fno-implicit-templates, -frepo | -qtempinc, | 模板实例化 |
-w | -w | 取消警告消息 |
| -warn64 | 允许对长型到整型的截断舍位(long-to-integer truncation)进行检查 |
| -qinfo=<…> | 生成信息消息 |
-fpack-struct | -qalign=bit_packed | 使用 bit_packed 排列规则 |
| -qalign=linuxppc | 使用默认 GCC 排列规则来维护与 GCC 对象的兼容性。这个值是默认值 |
-O,-O2,-O3 | -O,-O2,-O3,-O4,-O5 | 优化级别 |
| -qarch, -qtune, -qcache | 处理器特有的优化选项 |
本文为 Linux 开发人员概要介绍了 IBM 最新的基于 POWER5 和 PowerPC 970(FX)处理器的系统,并重点介绍了在这些系统上可以使用的几种新技术。最后,还介绍了有关为 eServer OpenPower、eServer p5、eServer i5 和 eServer BladeCenter JS20 定制的 Linux 发行版,内容包括二进制兼容性、编译器和其上可以使用的软件。