您的位置:首页 > 运维架构 > Linux

在POWER平台的Linux如何使用XL C/C++

2006-09-27 11:11 513 查看
介绍
运行于POWER处理器系统的Linux XL C/C++高级版本是基于标准的C/C++规范、命令行方式的编译器,
是VisualAge C/C++ 6.0的后续版本。XL C/C++不仅充分发挥了IBM POWER、POWER3TM和POWER4TM处理器
的功能,同时增加了对POWER5TM和POWER 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++编程的信息

参考资料:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: