·首页 ·Linux ·新闻 ·论坛 ·博客 ·空间 ·存储  
ChinaUnix >> AIX用户俱乐部 >> 正文 AIX论坛 | AIX博客
 
在POWER平台的Linux如何使用XL C/C++
2006-03-05 00:38:02 作者:官方 来自:http://www-900.ibm.com
 

介绍

运行于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++编程的信息

 

参考资料:



原文链接:http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2811265F28000
 发表评论 | 查看评论
 
 
    

 网友交流更多>> 
· 急!P570无法启动,前面板报错B..
· I/O瓶颈问题?
· 主机液晶面板显示10011BOB错误,..
· 重装需要注意哪些问题细节
· 大家帮分析下AIX的售前好还是售..
· hacmp中db2的进程监控脚本要怎么..
· HMC 的区别?
· 谁动了我的文件?
· 170 跟150 2台机器,靠自带的CO..
· 关于 tar 命令的高级使用
· 购买150
· vmstat分析
· 关于nfs的问题
· 根据时间删除的脚本
· HA启动问题
· smitty install 异常中断....
· 准备买台学习机,有几个问题请教..
· 备份环境的尴尬.....
· 如何查看是否安装了GB18030字符..
· 223学习中,哪里有免费的AIX主机..
· aix5.3有个硬盘报错,哪位达人给..
· AIX 7026-6H1 硬盘报错
· 怎麽升级HACMP啊?
· 如何建立Aix的超级用户?
· lslpp -l 输出为什么是这样?
· 想修改persistent IP
· 怎麽给一个分区装操作系统啊?
· mirrorvg 时出的奇怪问题
· 关于文件系统的奇怪事情
· f85电源灯闪烁,经常坏,很郁闷..
 最新文章更多>> 
· IBM、惠普、Sun 三大服务器厂商..
· 用户相关文件
· 用户相关文件
· AIX系统ROOTVG镜像操作
· UNIX与ORACLE备份与恢复
· IBM红皮书上翻译的HACMP原理1
· IBM红皮书上翻译的HACMP原理2
· vi编辑器
· Install WebLogic92 on AIX
· Fragment size, 逻辑块,及存放用..
· IBM Power服务器:统一就是力量
· IBM五大系列服务器发展概述
· UNIX引领新一代数据中心未来发展
· 技术追踪:追溯POWER的前世今生
· 挥向中小企业的Power刀片
· 大型主机刀片:敢问路在何方?
· AS400之-AS_400的迅速发展及未来
· 解决部分镜像问题的方法
· RAC环境下创建物理DATAGUARD
· 关于vea界面无法正常显示的问题..
· How to verify Legato NetWorke..
· 通过HMC升级和更新P5主机微码
· 探索 AIX 6:新特性概览(下)
· 探索 AIX 6:新特性概览(中)
· 探索 AIX 6:新特性概述(上)
· AIX+HA,如何调整文件系统空间
· Maximum allocation for logica..
· 在AIX下归档大于8G的文件
· AIX 常用命令汇总
· IBM AIX V5.3 系统管理(Test 22..
· IBM AIX V5.3 系统管理(Test 22..
· AIX ,FQA第2期
 

Copyright © 2001-2018 ChinaUnix.net All Rights Reserved

感谢所有关心和支持过ChinaUnix的朋友们