XL C/C++ 概述

XL C/C++ Advanced Edition 是一个基于标准的、进行优化的命令行编译器,用于在具有 PowerPC 体系结构的 PowerPC 硬件上运行的 Linux 操作系统。该编译器使应用程序开发者可以创建和维护优化的 32 位和 64 位应用程序。这些应用程序可以使用自动或显式共享内存程序并行化来提高性能。PowerPC 体系结构可能实现的许多优化和性能改进由编译器选项、编译指示和编译器调用方式控制。因此,可以用最少的专门手工编码实现硬件体系结构的优点。

本产品是 IBM VisualAge C++ V6.0 for Linux 的后续发行版。IBM 已将 VisualAge C++ 品牌更改为 XL C/C++

共享内存程序并行化

程序性能的重要改进在于利用 PowerPC 体系结构上可能实现的共享内存程序并行化(SMP)。编译器提供以下实现 SMP 的方法:

OpenMP 伪指令涉及定义迭代和非迭代代码的并行区域。

源代码兼容性

对于 C 语言,编译器支持两种 ISO 编程语言规范:ISO/IEC 9899:1990(称为 C89)和 ISO/IEC 9899:1999(C99)。编译器还支持全部两个 C++ 标准:ISO/IEC 14882:2003(称为标准 C++)和 ISO/IEC 14882:1998(该语言的第一个正式规范,称为 C++98)。除已标准化的语言级别之外,编译器还支持许多语言扩展,包括 GNU C 和 C++ 语言扩展的一部分。

二进制兼容性

XL C/C++ 支持 C++ 抽象二进制接口(ABI)。编译器生成二进制文件或目标文件,这些文件与通过 GNU C/C++ 版本 3.2 或 3.3 编译器创建的那些文件兼容。该编译器还支持 OpenMP V2.0 标准。符合 OpenMP 的 C 和 C++ 目标文件与通过 IBM XL Fortran for Linux 创建的目标文件是二进制兼容的,从而允许在 C 或 C++ 与 Fortran 之间进行语言间调用。

与开放式源代码资源的共存

要获取与使用 GCC C 或 C++ 编译器进行编译的代码的二进制兼容性,用 XL C/C++ 编译的程序包括的头文件应与驻留在同一系统上的 GNU 编译器所使用的一样。该编译器在维护与由 GNU C 生成的目标的二进制兼容性的同时还优化程序。有关此关系的一些值得注意的地方是:


命令行 C 和 C++ 编译器

XL C/C++ 提供了一些基本编译器调用命令以供选择,这些命令支持 C 和 C++ 语言的各种版本级别。每个调用命令自动为语言级别、其它相关语言功能的选项以及任何相关的预定义宏设置编译器子选项。在大多数情况下,应使用 xlc 命令来编译 C 源文件,使用 xlC 命令来编译 C++ 源文件(或同时有 C 和 C++ 源文件时)。调用 xlc++ 等价于调用 xlC

提供了基本命令的变体以支持特殊环境和文件系统的需求。变体是通过将后缀附加至基本命令形成的。在 Linux 平台上,提供了用于编译线程安全的应用程序的 _r 后缀。这些变体也称为可重入的调用

另外,gxlc 和 gxlc++ 实用程序是专门的编译器调用形式。

相关参考


XL C/C++ 使用 GNU C 和 C++ 头文件,生成的应用程序是使用随操作系统装入的 gcc 级别提供的 C 和 C++ 运行时库链接的。 XL C/C++ 提供了 SMP 运行时库以支持 XL C/C++ 编译器的自动并行化和 OpenMP 功能部件。

高性能数学库

从版本 7 开始,XL C/C++ 附带已调整的数学内部函数的 IBM Mathematics Acceleration Subsystem(MASS)库 。MASS 库都是线程安全的并通过相应的 libm 例程提高了性能。此外,不需要更改代码就可以使用 MASS 库。编译器支持 332bit 位版本和 64 位版本的 MASS 向量库(分别是 libmassvp4.alibmassvp4_64.a),这些向量库包含单精度和双精度的倒数例程和平方根函数。


实用程序和命令

XL C/C++ Advanced Edition 专门提供了下列命令来帮助程序开发。有关更多信息,参考 XL C/C++ Compiler Reference

vac_configure 实用程序
创建配置文件 vac.cfg 的程序,该配置文件指定 GNU 编译器和其它配置信息的位置。C 和 C++ 编译器使用 vac.cfg 作为自己的配置。

gxlc 和 gxlc++ 实用程序
一些调用方法,它们将 GNU C 或 GNU C++ 调用命令转换为对应的 xlcxlc++ 命令并调用 XL C/C++ 编译器。这些实用程序的目的是减少对用 GNU 编译器构建的现有应用程序的 makefile 的更改并使得向 XL C/C++ 的过渡更方便。

cleanpdf 命令
与概要定向反馈相关的命令,用于管理 PDFDIR 目录。从指定的目录、PDFDIR 目录或当前目录除去所有概要分析信息。

mergepdf 命令
与概要定向反馈(PDF)相关的命令,在将两个或多个 PDF 记录合并为一个记录时,它提供了权衡它们的重要性的能力。PDF 记录必须从相同的可执行文件派生。

resetpdf 命令
resetpdf 命令的当前行为与 cleanpdf 命令相同,保留它是为了与其它平台上的较早发行版兼容。

showpdf 命令
显示在概要定向反馈练习运行(在选项 -qpdf1-qshowpdf 下的编译)中执行的所有过程的调用和块计数的命令。

本地语言支持

XL C/C++ 支持 Unicode 标准、多字节字符、UTF-16 和 UTF-32 字符串文字、多个装入的语言环境和双向性。这些功能使创建国际应用程序成为可能或更加容易。

相关参考


文档和联机帮助

XL C/C++ Advanced Edition 提供以下形式的产品文档:

可以按如下方式找到或访问这些项:

自述文件 自述文件位于 /opt/ibmcmp/vacpp/7.0 和安装 CD 的根目录中。
手册页 为编译器调用和随产品提供的所有命令行实用程序提供了手册页。
基于 HTML 的帮助系统 提供了由 HTML 文件组成的帮助系统。该帮助系统也可作为产品“信息中心”的一部分联机获得。
PDF 文档 PDF 文件位于 /opt/ibmcmp/pdf 目录中。它们可通过 Adobe Acrobat Reader 来查看和打印。如果您没有安装 Adobe Acrobat Reader,则您可从 http://www.adobe.com 下载它。

完整的 XL C/C++ PDF 文档库由以下文件组成:

install.pdf
XL C/C++ Installation Guide 包含关于安装编译器和启用手册页的指示信息。

getstart.pdf
《XL C/C++ 入门》包含 XL C/C++ 组件的概述、新功能的说明、有关定制编译环境和进程的方法信息、按类别排列的编译器选项的总结表、对性能优化和调整的简介和将应用程序移植到 Linux 平台的一般建议。

language.pdf
XL C/C++ Language Reference 包含关于 C 和 C++ 编程语言的 IBM 实现(包括实现所定义的用于移植最初用 GNU C 和 C++ 开发的应用程序的扩展)的信息。

compiler.pdf
XL C/C++ Compiler Reference 包含关于各种编译器选项、编译指示、宏以及内置函数(包括那些用于并行处理的函数)的信息。

proguide.pdf
XL C/C++ Programming Guide 包含关于使用 XL C/C++ 来进行编程的信息,在其它出版物中没有涉及这些信息。

license.pdf
IBM XL C/C++ Advanced Edition V7.0 for Linux License Information 包含关于产品许可证的信息。

访问其它信息

要获取关于 XL C/C++ 的最新信息,请访问以下 URL 处的产品文档和支持页面。另外,IBM 技术支持组织开发的 IBM 红皮书包含基于来自实际经验的真实情况的技术信息。

您可能会发现下列红皮书对于 XL C/C++ 应用程序开发很有帮助:

_ POWER4 Processor Introduction and Tuning Guide,SG24-7041-00。

_ Understanding IBM eServer pSeries Performance and Sizing,SG24-4810-01。

IBM Copyright 2003