ImageVerifierCode 换一换
格式:DOCX , 页数:39 ,大小:34.39KB ,
资源ID:10499922      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10499922.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(如何在 POWER 上安装使用 IBM XL C.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

如何在 POWER 上安装使用 IBM XL C.docx

1、如何在 POWER 上安装使用 IBM XL C如何在 POWER 上使用 IBM XL C/C+ Advanced Edition V7.0 for Linux:GCC 用户指南窗体顶端窗体底端内容:简介XL C/C+ 概述版本 7 中的新功能编译器模式XL C/C+ 文档安装和配置 XL C/C+XL C/C+ 中的优化选项检查对 GNU gcc 和 gcc-c+ 语言扩展的依赖在 32 位和 64 位编译器模式之间切换模板实例化运行时链接XL C/C+ 支持的 GCC 功能可重新发布的库链接顺序运行时错误诊断编译器选项结束语词汇参考资料 作者简介对本文的评价订阅:developerWor

2、ks 时事通讯级别: 初级Chakarat Skawratananond, 技术顾问, IBMNam Keung, 高级程序员, IBMCalvin Sze, Linux 顾问 , IBM2005 年 1 月 10 日本文旨在帮助研究基于 IBM POWER 处理器的系统的 Linux 开发人员快速从 GNU gcc 和 gcc-c+ 编译器(称为 GCC)迁移到 IBM XL C/C+ Advanced Edition V7.0。本文是对 2003 年 7 月首次出版的“ How to Use IBM VisualAge C+ Version 6.0 for Linux on IBM pSe

3、ries and iSeries”一文的更新。 简介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

4、/C+ 表示 IBM XL C/C+ V7.0 for Linux。术语 Linux on POWER 是指在基于 IBM POWER 处理器的系统上运行的 Linux 操作系统。 本文要说明的主题包括: 1. 版本 7.0 中的新功能。 2. 如何设置 XL C/C+ 的编译环境。 3. 优化选项。 4. 检查对 GNU gcc 和 gcc-c+ 扩展的依赖。 5. 32/64 位编译器模式。 6. 模板实例化。 7. 运行时链接。 8. XL C/C+ 支持的 GCC 功能。 9. 可重新分布的库。 10. 链接顺序。 11. 对运行时错误的诊断。 XL C/C+ 提供了大量为 POWER

5、 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) Upda

6、te 3 上使用。在 IBM XL C/C+ Advanced Edition for Linux 站点中,可以发现更多信息。 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 和 g

7、cc-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 之间

8、的关系可以概括如下: 1. 编译使用 Linux 分布的 GNU gcc 和 gcc-c+ 头文件。 2. 编译使用 GUN 汇编程序。 3. 链接使用 GUN 链接程序。 4. 编译的程序使用 GNU gcc 和 gcc-c+ 运行时库。 5. 调试使用 GNU 编译器,gdb。 6. POWER 处理器的 IBM 内置功能与 GNU gcc/gcc-c+ 内置功能共存。 版本 7 中的新功能这一节将重点介绍 XL C/C+ for Linux 新增功能中的一小部分。有关新功能的完整列表,请参阅安装 XL C/C+ 时提供的 Getting Started with XL C/C+。 性能与

9、优化1. 对选项 -qarch 和 -qtune 的优化。把对 POWER5 和 POWER 970 架构的支持添加到选项 -qarch 和 -qtune 中。 例如: -qarch=pwr5, -qarch=ppc970, -qtune=pwr5, -qtune=ppc9702. 通过 qaltivec(仅 POWER 970)和 qenablevmx 支持 Vector Multimedia Extensions (VMX)。 3. 随编译器提供了 IBM Mathematics Acceleration Subsystem (MASS) 向量库。向量库是线程安全的,通过相应的 libm

10、例程提供改善的性能。 符合行业标准1. 对于 C、C+ 和 Fortran,XL C/C+ 支持 OpenMP API V2.0。 2. 在版本 7 中,用 XL C/C+ 实现了更多的 GNU gcc 和 gcc+ 扩展。(有关的完整列表,请参见 Getting Started with XL C/C+ 中的表。) 3. 增强的 Unicode 和 NLS 支持。添加了新数据类型以支持 UTF-16 和 UTF-32。 新功能1. gxlc 和 gxlc+ Utilities。它们是一些调用方法,将 GNU gcc 或 gcc-c+ 调用命令转换为相应 xlc 或 xlc+ 命令以调用 XL

11、 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+ 的功能,但

12、我们建议您使用 XL C/C+ 调用方法及其相关选项。2. XL C/C+ 将版本信息添加到创建的模板注册文件中。编译器在内部使用这条信息来跟踪应该使用的模板注册文件格式的版本。 3. 为编译器调用命令和每个命令行实用程序都提供了手册页。 编译器模式XL C/C+ 的默认位置是 /opt/ibmcmp。XL C/C+ 包含各种调用命令。每个命令都有相应的线程安全版本。构建多线程应用程序时,要使用线程安全版本(除了 gxlc 和 gxlc+)。下表显示了可用调用命令。 表 1. 可用调用命令调用命令 线程安全变量 描述 xlC 或 xlc+xlC_r 或 xlc+_r源文件作为 C+ 代码进行编

13、译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、 -qa

14、lias=ansi、 -qstrict_induction、 -D_ANSI_C_SOURCE、 -D_ISOC99_SOURCE、 -D_STRICT_ANSI_ cccc_r用于不需要遵守 C89 和 C99 的遗留 C 代码。此调用包含下列编译器选项: -qlanglvl=extended、 -qnoro、 -qnoroconst xlCcore 或 xlc+coreXlCcore_r 或 xlc+core_r与 xlC 和 xlc+ 相同,但是编译器将仅链接到运行时库的内核。如果想将应用程序链接到其他运行时库,而不是链接到随 XL C/C+ 一起提供的运行时库,那么可以使用这个调用 g

15、xlc 或 gxlc+ 转换方法,该方法将 GNU gcc 或 gcc-c+ 调用命令转换为相应 xlC 或 xlc+ 命令并调用 XL C/C+ 编译器 在大多数情况下,应该使用 xlC 命令来编译 C+ 源文件,使用 xlc 命令来编译 C 源文件。如果既拥有 C 文件又拥有 C+ 对象文件,那么可以使用 xlC 进行链接。注意,在 VisualAge V6.0 中,调用 xlc 意味着使用的是选项 -qlanglvl=stdc89,而不是在 XL C/C+ V7.0 中的 -qlanglvl=extc89。 XL C/C+ 文档安装 XL C/C+ 时提供下列 PDF 文档:1. XL

16、C/C+ for Linux Getting Started (getstart.pdf)。 2. XL C/C+ for Linux Installation Guide (install.pdf) 包含有关安装编译器和启用手册页的说明。 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) 包含关于各种编译器选项、编译指令、宏和内置函数信息,这些信息包括那些用于并

17、行处理的信息。 5. XL C/C+ for Linux Programming Guide (proguide.pdf) 包含其他出版物中尚未涉及的关于使用 XL C/C+ 编程的信息。 在下列位置可以找到这些文档: 1. 安装 CD 的 /docs/LANG/pdf 目录,其中 LANG 表示语言和位置代码。 2. 安装编译器后的 /opt/ibmcmp/vacpp/7.0/doc/LANG/pdf 目录。 产品文档的 HTML 版本安装在 /opt/ibmcmp/vacpp/7.0/doc/LANG/html 目录。在这个目录中打开 index.html 文件可以查看 HTML 文件。安

18、装和配置 XL C/C+为了获得与 GNU gcc 和 gcc-c+ 编译器的二进制兼容,必须首先安装下列包: 表 2. RHEL3GCC 先决条件 版本要求 gcc3.2.3gcc-c+3.2.3glibc-devel(32 和 64 位)2.3.2libstdc+-devel(32 和 64 位)3.2.3表 3. SLES 9GCC 先决条件 版本要求 gcc3.3.3gcc-c+3.3.3gcc-64bit9glibc-devel-64 bit9libstdc+-devel-64 bit)9SLES 9 还需要 java2 和 java2-jre 包版本 1.3.1。有关安装编译器的详

19、细信息,请参阅 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。XL C/C+ 提供名为 vac_configure 的实用程序(默认

20、情况下,该程序位于 /opt/ibmcmp/vac/7.0/bin),帮助创建和更新配置文件。默认配置文件是 /etc/opt/ibmcmp/vac/7.0/vac.cfg。 XL C/C+ Compiler Reference 文档中有 vac_configure 的语法。 还可以使用下列编译器选项指定标准包含路径:表 4. 编译器选项选项名称 描述 -qgcc_c_stdinc= 指定 GNU gcc 头文件的新目录搜索路径-qgcc_cpp_stdinc=指定 GNU gcc-c+ 头文件的新目录搜索路径-qc_stdinc=指定 IBM C 头文件的新目录搜索路径-qcpp_stdin

21、c=指定 IBM C+ 头文件的新目录搜索路径XL C/C+ 中的优化选项XL C/C+ 提供了适合 IBM 硬件的优化选项组合。在许多情况下,对于 Linux on POWER,使用 XL C/C+ 编译的应用程序显示了比那些使用 GCC 编译的应用程序更显著的性能提高。应该注意的是,对于所有应用程序,并不是所有优化都是有利的。通常必须在编译器进行的优化与编译时间增加(伴随着调试能力减低)的程度之间进行平衡。优化级别优化级别由编译器选项指定。下表汇总了每一优化级别上的编译器行为。表 5. 编译器行为选项 行为 -qnoopt 快速编译,完全调试支持-O2(与 -O 相同)执行编译器开发人员认

22、为是编译速度和运行时性能最佳组合的优化。如果没有使用 -qnostrict_induction 或 -qnostrict 明确否定,那么这个设置中将包含 -qstrict 和 qstrict_induction -O3 执行内存占用大、编译时间长或两者都有的其他优化。当运行时改善比最大程度地减少编译资源使用重要时,建议使用这些优化-O4 和 -O5执行过程间优化、循环优化和自动计算机调整特定处理器架构的优化目标计算机选项是指示编译器为给定微处理器或架构系列上的最佳执行生成代码的那些选项。您可以通过优化,来满足目标处理器、给定处理器架构系列内的一系列处理器或特定处理器的最大范围的可能选择。下列选

23、项将控制影响目标计算机的单独某些方面的优化。表 6. 优化选项选项 行为 -qarch选择应该为其生成指令代码的处理器架构系列。默认值是 -qarch=ppc64grsq。还可以使用以下子选项: auto、 pwr3、 pwr4、 pwr5、 ppc970、 ppc64、 ppcgr、 rs64b、 rs64c -qtune偏向于对给定微处理器上的执行操作进行优化,但这并不意味着将与指令集合架构有关的任何操作作为目标。Linux 上的默认值是 -qtune=pwr3。可用的子选项包括: auto、 pwr3、 pwr4、 pwr5、 ppc970、 rs64b、 rs64c -qcache定义

24、特定缓存或内存几何。如果使用了 qcache,则将 -qhot 或 -qsmp 与其一起使用 -qhotHigh-Order Transformations:该优化可以通过诸如交换、合并及展开等方法特别地提高循环性能。指定 -qhot 时,默认值为选项 -qhot=vector。尝试将 -qhot 与 -O2 和 -O3 一起使用。如果不可能存在转换,该选项的影响是中性的。 -qsmp生成共享内存并行处理所需的线程代码。指定 -qsmp 时,默认值为选项 -qsmp=auto。如果在 OpenMP 程序中编译且不想进行自动并行化,则使用 -qsmp=omp:noauto。使用 -qsmp 时,

25、总是使用 _r 编译器调用 为了最有效地使用目标计算机选项,应该尝试使用 qarch 指定可能的最小计算机系列,它将很好地运行代码。尝试使用 qtune 为实际上指定性能最好的地方。例如,如果仅 POWER5 系统中支持应用程序,则使用 -O3 -qarch=pwr5 -qtune=pwr5。当系统具有可配置的 L2 或 L3 缓存选项时,或者当执行模式减少了缓存的共享级别的有效大小时(例如,POWER5 中的单片双核的 SMP 执行),修改缓存配置可能会有用。 POWER 平台支持其他平台上无法使用的机器指令。XL C/C+ 提供了一组内置函数,直接映射到特定 POWER 指令。通过使用这些

26、函数,可以消除函数调用返回成本、参数传递、堆栈调整及所有与函数调用相关的其他成本。有关支持的内置函数的完整列表,请参阅 XL C/C+ C+ for Linux on pSeries Compiler Reference 文档。 检查对 GNU gcc 和 gcc-c+ 语言扩展的依赖严格遵从 ISO 语言规范的应用程序将具有最大程度的可移植性。IBM XL C/C+ 支持一部分 GNU gcc 和 gcc-c+ 到 C 和 C+ 的扩展。可能需要重新看一下依赖不受支持的扩展的代码。如果使用了任何扩展,GCC 选项 pedantic 会将引导它打印警告消息。 http:/gcc.gnu.org

27、 中有 GNU gcc/gcc-c+ 扩展的完整列表。 在 32 位和 64 位编译器模式之间切换通过指定编译器选项 -q32 或 -q64,或通过设置环境变量 OBJECT_MODE,可以设置 XL C/C+ 生成 32 位或 64 位对象。 -q32 和 -q64 选项会覆盖 OBJECT_MODE 变量设置的值。如果没有指定 -q32 和 -q64,并且没有设置 OBJECT_MODE,那么编译器的默认模式为 32 位输出模式。在 64 位模式中,定义了 _64BIT_ 预处理器宏。 32 位和 64 位对象不能绑定在一起,所以需要确保全部在同一模式中编译所有对象。链接选项还必须反映要链

28、接到的对象类型。如果具有 64 位对象,必须使用 64 位模式链接这些对象。模板实例化模板实例化是到 C+ 语言的扩展之一,GCC 和 XL C/C+ 对其进行不同处理。编译器和链接程序需要确保每个模板实例在可执行程序中确实仅出现一次。这一节先讨论 GCC 如何处理模板实例化,然后讨论 XL C/C+ 中的可用选项。GCC 3.2 不支持模板储存库的概念,模板储存库是存储模板实例的自动维护的位置。然而,GCC 3.2 提供了下列选项: -frepo 如果使用此选项,那么对于将模板实例化了的每个 .cc 文件,编译器将生成扩展名为 .rpo 的文件。这个 .rpo 文件包含相应对象文件中使用的模

29、板实例化的清单。链接时,一些对象文件可能会重新编译和重新链接,以避免符号重复。 -fno-implicit-templates 使用这个选项,开发人员可以确定必须对哪些实例进行实例化。还有其他几个选项,如 -fexternal-templates 和 -falt-external-templates,但是 GCC 3.2 中不支持这些选项。 XL C/C+ 中可以使用下列编译器选项: -qtempinc 使用这个选项,XL C/C+ 可以确定要实例化的模板代码,作为编译和链接过程的最后一步。这样做可以防止在最终的可执行程序或库中有重复的模板实例。 该选项要求以特定方式组织源代码。也就是说,模板

30、的声明和定义必须在单独的文件中。模板定义需要位于与头文件相同的目录中,并且拥有相同名称,但是具有 .cc(小写字母 c)后缀。否则,头文件必须使用 #pragma implementation(.) 语句来标识相应的定义文件。例如,模板类 List 的声明和定义文件分别为 List.h 和 List.cc。在 List.h 文件中,必须包含语句 #pragma implementation(List.cc)。 如果没有使用 -qtempinc 指定目录,那么编译器将在当前目录中创建名为 tempinc 的目录,用它来保存将在模板中生成的信息。可以为这个目录选择自己的名称和位置,这样,当创建包含在不同目录中编译的对象文件的可执行程序时,可以使用相同目录。 例如:xlC -c foo.cc -qtempinc=./mytemplatescd .xlC -o app app.cc src/foo.o qtempinc=mytemplates因为模板代码实际由编译器在链接时创建,所以当使用具有共享库的模板时(其中没有链接发生),就会出现问题。在 XL C/C+ Version 5 中,引入了选项 -qmkshrobj,当创建使用模板的共享对象时,

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1