跳过正文
Background Image
  1. Posts/

从 XLC 10.1 升级到 IBM Open XL C/C++ for AIX 17.1.0 的问题与解决方案

·392 字·1 分钟· ·
沈显鹏
作者
沈显鹏
目录

本文记录了从 IBM XLC 10.1 升级到 XLC 17.1(IBM Open XL C/C++ for AIX 17.1.0) 过程中遇到的 12 个问题及修复方法。
如果你遇到了本文未涵盖的错误,欢迎在评论区分享,无论是否有解决方案。


1. 将 cc 替换为 ibm-clang
#

首先需要在全局 Makefile 中,将所有相关的 cc 替换为 ibm-clang,例如:

- CC=cc
- CXX=xlC_r
- XCC=xlC_r
- MAKE_SHARED=xlC_r
+ CC=ibm-clang
+ CXX=ibm-clang_r
+ XCC=ibm-clang_r
+ MAKE_SHARED=ibm-clang_r

同时,可参考 选项映射文档 进行新 Clang 选项的映射。


2. error: unknown argument: ‘-qmakedep=gcc’
#

- GEN_DEPENDENTS_OPTIONS=-qmakedep=gcc  -E -MF $@.1 > /dev/null
+ GEN_DEPENDENTS_OPTIONS= -E -MF $@.1 > /dev/null

3. should not return a value [-Wreturn-type]
#

- return -1;
+ return;

4. error: non-void function ‘main’ should return a value [-Wreturn-type]
#

- return;
+ return 0;

5. error: unsupported option ‘-G’ for target ‘powerpc64-ibm-aix7.3.0.0’
#

- LIB_101_FLAGS := -G
+ LIB_101_FLAGS := -shared -Wl,-G

6. Undefined symbol (libxxxx.so)
#

- LIB_10_FLAGS := -bexport:$(SRC)/makefiles/xxxx.def
+ LIB_10_FLAGS := -lstdc++ -lm -bexport:$(SRC)/makefiles/xxxx.def

7. unsupported option -qlongdouble
#

- drv_connect.c.CC_OPTIONS=$(CFLAGS) -qlongdouble -brtl
+ drv_loadfunc.c.CC_OPTIONS=$(CFLAGS) $(IDIR) -brtl

8. Undefined symbol: ._Z8u9_closei
#

- extern int u9_close(int fd) ;
+ extern "C" int u9_close(int fd) ;

9. ERROR: Undefined symbol: .pow
#

- CXXLIBES = -lpthread -lC -lstdc++
+ CXXLIBES = -lpthread -lC -lstdc++ -lm

10. ‘main’ (argument array) must be of type ‘char **’
#

- d_char *argv[];
+ char *argv[];

11. first parameter of ‘main’ (argument count) must be of type ‘int’
#

- int main(char *argc, char *argv[])
+ int main(int argc, char *argv[])

12. ERROR: Undefined symbol: ._ZdaPv
#

- LIB_3_LIBS	:= -lverse -llog_nosig
+ LIB_3_LIBS	:= -lverse -llog_nosig -lstdc++

转载本文请注明作者与出处,禁止商业用途。欢迎关注公众号「DevOps攻城狮」。

相关文章

解决在 AIX 上 Git Clone 失败的两个问题
·1279 字·3 分钟
本文记录了在 AIX 上使用 Jenkins 进行 Git Clone 时遇到的两个问题及其解决方法,包括依赖库加载失败和 SSH 认证失败。
通过解除文件资源限制:解决在 AIX 使用 Git 下载大容量仓库失败问题
·482 字·1 分钟
在 AIX 系统中遇到 Git 下载大容量仓库时因文件大小限制导致失败,通过修改 ulimit 设置解决问题。
AIX 上安装工具以及一些使用总结
·256 字·1 分钟
记录在使用 AIX 时所遇到的问题和解决办法,以备以后遇到同样问题不要再因为这些再浪费时间,希望也能帮助到你。
解决通过 Jenkins Artifactory plugin 上传 artifacts 失败的问题 “unable to find valid certification path to requested target”
·568 字·2 分钟
本文介绍了如何解决 Jenkins agent 上传 artifacts 到 Artifactory 时遇到的 SSL 证书验证问题,包括生成安全认证文件和导入到 Java 的 cacerts 中。
2023 年最值得关注的 DevOps 趋势
·2676 字·6 分钟
本文介绍了2023年DevOps领域的主要趋势,包括云原生技术的持续采用、加强安全性和合规性、开发与运营团队协作、自动化和人工智能的发展等。
从 AIX 上传构件到 Artifactory 失败
·888 字·2 分钟
本文介绍在 AIX 上通过 Jenkins 上传构件到 Artifactory 时遇到的 SSL 证书验证问题,包括更新 Java 的 cacerts 文件来解决问题。