简介
xl c/c++ advanced edition for ">linux 是基于标准的命令行编译器,用于在基于 power 处理器的系统上运行的 linux。它是 visualage? c++ v6.0 for linux 的后续版本。xl c/c++ 不仅使用 ibm power、power3? 和 power4? 的功能,而且还添加了对新的 power5? 和 power 970 处理器的支持。本文介绍了 xl c/c++ v7.0 for linux 编译器中添加的新功能并着重讲述了 gcc 和 xl c/c++ 之间的各种区别。
在本文中,我们用 xl c/c++ 表示 ibm xl c/c++ v7.0 for linux。术语 linux on power 是指在基于 ibm power 处理器的系统上运行的 linux ">操作系统。
本文要说明的主题包括:
版本 7.0 中的新功能。
如何设置 xl c/c++ 的编译环境。
优化选项。
检查对 gnu gcc 和 gcc-c++ 扩展的依赖。
32/64 位编译器模式。
模板实例化。
运行时链接。
xl c/c++ 支持的 gcc 功能。
可重新分布的库。
链接顺序。
对运行时错误的诊断。
xl c/c++ 提供了大量为 power architecture 量身定做的优化选项,其中包括power5 和 power 970 处理器。在许多情况下,对于 power 基于处理器的系统,使用 xl c/c++ 构建的应用程序显示了比使用 gcc on linux 构建的那些应用程序更显著的性能提高。如果您想充分利用 power architecture 的潜能,我们建议您使用 xl c/c++。
xl c/c++ for linux 现在可以在 suse linux enterprise server 9 for power (sles 9) 和 red hat enterprise linux as v3 (rhel 3) update 3 上使用。
xl c/c++ 概述
xl c/c++ 是 linux on power 的优化的、基于标准的命令行编译器。可以将 xl c/c++ 用作后缀为 .c(小写 c)的文件的 c 编译器,或用作后缀为 .c(大写 c)、.cc、.cpp 或 .cxx 的文件的 c++ 编译器。xl c/c++ 支持 c 的两种 iso ">编程语言规范:c89 和 c99。该编译器还支持两种 c++ 标准:standard c++ 和 c++98。另外,编译器还支持许多语言扩展,包括 gnu gcc 和 gcc-c++ 语言扩展的子集。
xl c/c++ 创建二进制或对象文件,这些文件与由 gcc 生成的文件相兼容。为了获得这种兼容性,在同一系统上,使用 xl c/c++ 编译的程序与 gcc 使用的那些程序包含相同的头文件。xl c/c++ 使用 gnu gcc 和 gcc-c++ 头文件,生成的应用程序与通过 gcc 提供的 c 和 c++ 运行时库链接。因此,应用程序的一部分可以使用 xl c/c++ 构建获得优化,然后将其与使用 gcc 构建的那部分组合来生成应用程序,该应用程序运行性能就好像是由 gcc 或 xl c/c++ 单独构建的。linux on power 的 xl c/c++ 和 gcc 之间的关系可以概括如下:
编译使用 linux 分布的 gnu gcc 和 gcc-c++ 头文件。
编译使用 gun 汇编程序。
链接使用 gun 链接程序。
编译的程序使用 gnu gcc 和 gcc-c++ 运行时库。
调试使用 gnu 编译器,gdb。
power 处理器的 ibm 内置功能与 gnu gcc/gcc-c++ 内置功能共存。
版本 7 中的新功能
这一节将重点介绍 xl c/c++ for linux 新增功能中的一小部分。有关新功能的完整列表,请参阅安装 xl c/c++ 时提供的 getting started with xl c/c++。
性能与优化
对选项 -qarch 和 -qtune 的优化。把对 power5 和 power 970 架构的支持添加到选项 -qarch 和 -qtune 中。
例如:
-qarch=pwr5, -qarch=ppc970, -qtune=pwr5, -qtune=ppc970
通过 –qaltivec(仅 power 970)和 –qenablevmx 支持 vector multimedia extensions (vmx)。
随编译器提供了 ibm mathematics acceleration subsystem (mass) 向量库。向量库是线程安全的,通过相应的 libm 例程提供改善的性能。
符合行业标准
对于 c、c++ 和 fortran,xl c/c++ 支持 openmp api v2.0。
在版本 7 中,用 xl c/c++ 实现了更多的 gnu gcc 和 gcc++ 扩展。(有关的完整列表,请参见 getting started with xl c/c++ 中的表。)
增强的 unicode 和 nls 支持。添加了新数据类型以支持 utf-16 和 utf-32。
新功能
gxlc 和 gxlc++ utilities。它们是一些调用方法,将 gnu gcc 或 gcc-c++ 调用命令转换为相应 xlc 或 xlc++ 命令以调用 xl c/c++ 编译器。
要使用 gcc –ansi 选项来编译 hello world 程序的 c 版本,可以使用:
gxlc -ansi hello.c
其转换为:
xlc –f:c89 hello.c
然后使用此命令来调用 xl c 编译器。
gxlc 和 gxlc++ 有助于最大程度地减少对使用 gnu 编译器构建的现有应用程序的 makefile 的更改。它们支持 gcc 选项的主要部分,配置文件 gxlc.cfg 控制它们的操作。对于未转换的输入选项,gxlc 和 gxlc++ 将返回警告。虽然 gxlc 和 gxlc++ 方便了到 xl c/c++ 的转换,从而可以充分使用 xl c/c++ 的功能,但我们建议您使用 xl c/c++ 调用方法及其相关选项。
xl c/c++ 将版本信息添加到创建的模板注册文件中。编译器在内部使用这条信息来跟踪应该使用的模板注册文件格式的版本。
为编译器调用命令和每个命令行实用程序都提供了手册页。
编译器模式
xl c/c++ 的默认位置是 /opt/ibmcmp。xl c/c++ 包含各种调用命令。每个命令都有相应的线程安全版本。构建多线程应用程序时,要使用线程安全版本(除了 gxlc 和 gxlc++)。下表显示了可用调用命令。
表 1. 可用调用命令
调用命令 线程安全变量 描述
xlc 或 xlc++xlc_r 或 xlc++_r源文件作为 c++ 代码进行编译
xlcxlc_r源文件作为 c 代码进行编译。该模式包含下列编译器选项: -qlanglvl=extc89、 -qalias=ansi、 -qcpluscmt、 -qkeyword=inline
c89 c89_r编译器执行 iso c89 标准。此调用包含下列编译器选项: -qlanglvl=stdc89, -qalias=ansi、 -qstrict_induction、 -qnolonglong、 -d_ansi_c_source、 -d__strict_ansi__
c99 c99_r编译器执行 iso c99 标准。此调用包含下列编译器选项: -qlanglvl=stdc99、 -qalias=ansi、 -qstrict_induction、 -d_ansi_c_source、 -d_isoc99_source、 -d__strict_ansi__
![]()
如果喜欢如何在 power 上使用 ibm xl c/c++ advanced edition v7.0 for linux:gcc 用户指南请收藏或告诉您的好朋友.
阅读(255) | 评论(0) | 转发(0) |