charleschchen
作者charleschchen2022-08-24 18:24
系统架构师, 浪潮商用机器有限公司

在AIX 7.3上安装XL C/C++ V16.1编译器

字数 2099阅读 3348评论 1赞 6

背景

客户在升级操作系统之后,需要同步更新编译器软件,以获取最新语言标准支持(例如C++14,C++11等等)、最新硬件支持、更优的编译性能与优化效果。
当前使用的主流K1 Power服务器基于POWER9处理器,采用XL C/C++ V16.1以上版本即可充分利用POWER9处理器特性。

XL C/C++ V16.1在2018年4季度发布,支持生命周期为5+3模式,预期的停止服务时间为2026年4季度(说明:本处信息仅供参考,以IBM发布为准)。
通过IBM product lifecycle网站可以查询XL C/C++生命周期,如下:
https://www.ibm.com/support/pages/lifecycle/search?q=XL%20C%2FC%2B%2B%2016.1

此外,AIX与XL C/C++编译器的兼容性矩阵可以参考如下网页:
AIX OS levels supported by XL Compilers
https://www.ibm.com/support/pages/aix-os-levels-supported-xl-compilers

可知,XL C/C++ V16.1可以支持AIX 7.1/7.2/7.3,特定版本需要安装OS或编译器补丁。

安装

解压编译器介质,并cd到安装目录:

# zcat IBM_XL_C_CPP_V16.1.0.0_AIX_EVAL.tar.Z|tar -xvf -
# cd usr/sys/inst.images
# smitty install_latest

选择待安装软件所在目录(当前目录):

注意编译器包含独有的license协议,需要接受才能完成进一步安装:

完成安装以后,相应的编译命令在/opt/IBM/xlC 以及/opt/IBM/xlc目录下:

# oslevel -s  
7300-00-02-2220  
# /opt/IBM/xlC/16.1.0/bin/xlC -qversion  
/opt/IBM/xlC/16.1.0/bin/.orig/xlC: 1501-287 (S) This compiler does not support AIX 7.3. Please check with IBM (http://www-01.ibm.com/support/docview.wss?rs=43&uid=swg21326972) to see if there is a PTF for this compiler that supports this AIX level.

可以看到,默认安装后,编译时会提示版本不兼容,这是因为补丁版本不匹配,需要登陆IBM fixcentral下载相应的补丁,如图示:

通常我们会选择安装最新的Fix Pack,在本文写作时是FP12,解压然后smitty update_all安装补丁,完成补丁安装后,编译器即可正常运行:

# zcat 16.1.0.12-IBM-xlCcmp-AIX-FP012.tar.Z|tar -xvf -
# smitty update_all  
# /opt/IBM/xlC/16.1.0/bin/xlC -qversion  
IBM XL C/C++ for AIX, V16.1.0 (5725-C72, 5765-J12)  
Version: 16.01.0000.0012  

XL C/C++编译器安装后自带了samples示例代码。其中C++示例代码在/opt/IBM/xlC/16.1.0/samples目录下,下面以STL vector类型示例编译过程:

首先将xlC/xlc编译命令目录加入系统路径:
 #export PATH=$PATH:/opt/IBM/xlc/16.1.0/bin:/opt/IBM/xlC/16.1.0/bin

# cd /opt/IBM/xlC/16.1.0/samples/stl/vector  
# make  
Target "all" is up to date.  
# touch vector.cpp  
# make  
xlC -qrtti -blibpath:"/usr/lib:/lib" -c vector.cpp  
xlC -qrtti -blibpath:"/usr/lib:/lib" vector.o -o vector    

说明

XL C/C++ V16.1编译器除了支持传统的XL编译器前端,还引入了一个基于CLANG的编译器前端。用户可以根据实际需要,选择新的编译
命令xlclang++。例如如果需要使用C++14开发新项目,建议使用xlclang++编译命令。但如果仅仅是对旧项目进行编译器升级,则不建议改动已有编译命令。
简要对比可以参考下表:

详细信息可以参考XL C/C++ V16.1 migration guide:
https://www.ibm.com/docs/en/SSGH3R_16.1.0/pdf/migrate.pdf

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

6

添加新评论1 条评论

baobao829baobao829技术支持, 北京银信长远科技股份有限公司
2022-11-03 11:01
谢谢分享!!!
Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广