介绍

运行于POWER处理器系统的Linux XL C/C++高级版本是基于标准的C/C++规范、命令行方式的编译器,

VisualAge C/C++ 6.0的后续版本。XL C/C++不仅充分发挥了IBM POWER、POWER3TMPOWER4TM处理器

的功能,同时增加了对POWER5TMPOWER 970处理器的支持。本文主要介绍Linux平台的XL C/C++ 7.0新

增加的特点和gcc编译器的区别。包含以下几个方面:

       1.   XL C/C++概述

       2.   性能和优化  

       3.   支持的行业标准

       4.   XL C/C++的新特点

       5.   编译器命令

       6.   安装配置 XL C/C++

       7.   32- 和64-bit编译模式

       8.   XL C/C++的文档

     针对于POWER系统的架构特点,XL C/C++提供了大量的优化选项,包括针对于POWER5和POWER 970处理

  器架构的优化。从性能方面考虑,基于POWER处理器的Linux系统的应用,使用XL C/C++编译要比使用gcc编

  译有更好的表现,XL C/C++编译器可以充分利用POWER架构潜在的性能优势,建议使用XL C/C++编译器编译

  应用。

     现在 XL C/C++ 7.0可以运行在SUSE Linux Enterprise Server 9和Red Hat Enterprise AS V3

  update 3 Linux系统上,跟详细的资料请参考以下网址:

  http://www-306.ibm.com/software/awdtools/xlcpp/features/linux/index.html

 

一,XL C/C++概述

   XL C/C+作为C编译器可以编译.c后缀的代码,或者作为C++编译器可以编译.C,.cc,.cpp或者.cxx后缀

 的代码,XL C/C++支持以下规范:

   - C的ISO语言规范C89和C99

   - 标准C++和C++98

另外,XL C/C++支持许多语言的扩展,包括GNU gcc和g++语言的扩展。

  XL C/C++可以创建兼容于GCC生成的二进制或目标文件的对象,要达到这种兼容性,使用XL C/C++编译的

应用包含使用GCC同样的头文件。XL C/C++使用GNU gcc和g++的头文件,应用程序链接gcc提供的C和C++的

运行库,因而应用的部分代码可以使用XL C/C++,达到优化的目的。XL C/C++和gcc的关系可以总结如下:

1.  使用Linux发布的GNU gcc和g++的头文件编译应用

2.  使用GNU的汇编器编译

3.  使用GNU的连接器(linker)链接

4.  编译的应用程序使用GNU gcc和g++的运行库

5.  使用GNU的调试器gdb调试应用

6.  IBM针对POWER处理器的嵌入函数与GNU gcc/g++的嵌入函数共存

 

二,性能和优化

 1. 针对于新的处理器架构,–qarch和-qtune编译选项增加了新的参数项,支持POWER5和POWER 970架构,

    如下:

-qarch=pwr5

-qtune=pwr5

-qarch=ppc970

-qtune=ppc970

 2. 支持VMX(Vector Multimedia Extensions),参数为-qaltivec(只适用于POWER 970)和-qenablevmx

 3. IBM MASS(Mathematics Acceleration Subsystem)向量库与编译器打包发布,向量库函数结合libm函

   数可提高计算性能

 

三,支持的行业标准

1.  XL C/C++支持OpenMP API v2.0

2.  XL C/C++实现了更多的GNU gcc 和g++的扩展

3.  加强对unicode和NLS的支持,增加了信的UTF-16和UTF-32类型

 

四,XL C/C++的新特点

1.  gxlc和gxlc++工具。此工具将GNU gcc和g++的编译器转换为XL C/C++相应的编译器xlc或者xlc++,

如使用gcc –ansi参数项编译C的hello.c程序:

gxlc –ansi hello.c

转化为

xlc –F:c89 hello.c

调用XL C的编译器

gxlc和gxlc++可以帮助我们尽可能少的修改GNU编译器的makefile,支持主要的gcc选项,可使

gxlc.cfg参数文件配置。

2.  XL C/C++在模板注册文件中增加了版本信息,这些信息只供编译器内部使用,决定具体采用的模板

注册文件的格式。

 

五,编译器命令

   XL C/C++的确省路经为/opt/ibmcmp,XL C/C++有多组具体的编译器命令组成,每组编译器命令都

有其相应的线程版本,gxlc和gxlc++除外,如下表所示:

编译器命令

线程版本

描述

xlC 或 xlc++

xlC_r 或 xlc++_r

编译C++的源代码

xlc

xlc_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__

cc

cc_r

旧版本的C代码编译器,不要求完全遵从C89和C99标准,使用如下编译参数:

-qlanglvl=extended, -qnoro, -qnoroconst

xlCcore 或

xlc++core

xlCcore_r或

xlc++core_r

xlC和xlc++雷同,但编译器只链接运行库的核心部分

gxlc或

gxlc++

 

GNU gcc和g++的编译转化为xlC或xlc++的编译

在大多数情况下,使用

 

  xlC编译C++的源代码,xlc编译C的源代码,如果混合C和C++的源代码,则使用xlC编译链接。

 

六,安装配置 XL C/C++

  XL C/C++要二进制兼容GNU gcc和g++编译器,首先应满足以下条件:

RHEL3

GCC 要求

版本要求

gcc

3.2.3

gcc-c++

3.2.3

glibc-devel (both 32 and 64-bit)

2.3.2

libstdc++-devel (both 32 and 64-bit)

3.2.3

 

SLES 9

GCC 要求

版本要求

gcc

3.3.3

gcc-c++

3.3.3

gcc-64bit

9

glibc-devel-64 bit

9

libstdc++-devel-64 bit)

9

 

SLES 9也需要java2 和java2-jre版本1.3.1的支持

更详细的信息请参考XL C/C++ for Linux Installation Guide的内容。

   成功安装XL C/C++,建议运行new_install(确省在/opt/ibmcmp/vac/7.0/bin目录下)工

具,此工具将执行vac_configure脚本,并生成相应的配置文件。配置文件保存XL C/C++要

使用的32位和64位的gcc编译器的信息,这是必需的,因为在同一系统可能存在多个gcc的编

译器,XL C/C++需要知道那一个gcc编译器是要使用的。

   可以使用如下的编译参数选项,指定要链接使用的文件:

参数名称

描述

-qgcc_c_stdinc=<paths>

指定搜寻GNU gcc头文件的新的目录

-qgcc_cpp_stdinc=<paths>

指定搜寻GNU g++的头文件的新的目录

-qc_stdinc=

指定搜寻的IBM C头文件的新的目录

-qcpp_stdinc=<paths>

指定搜寻的IBM C++的新的目录

 

 

七,32- 和64-bit编译模式

   通过编译参数的指定XL C/C++可以生成32- 或64-bit的应用,参数为-q32,或者-q64, 或者

通过设置环境变量OBJECT_MODE,但-q32和-q64参数项的使用,将忽略OBJECT_MODE环境变量,

确省情况下,编译器生成32-bit的应用。

   32- 和64-bit不能揉合在一起使用,应当确定使用的目标文件在同一模式的使用。

 

八,XL C/C++的文档

安装使用XL C/C++可以参考以下文档:

1.  XL C/C++ for Linux Getting Started (getstart.pdf)

2.  XL C/C++ for Linux Installation Guide (install.pdf) 包含安装XL C/C++和使用联机帮助的方法

3.  XL C/C++ for Linux C/C++ Language Reference (language.pdf) 包含IBM支持C和C++语言的信息

4.  XL C/C++ for Linux Compiler Reference (compiler.pdf) 包含不同编译命令的编译参数

5.  XL C/C++ for Linux Programming Guide (proguide.pdf) 包含使用XL C/C++编程的信息

 

参考资料:

 
Logo

更多推荐