在AIX 7.1 xlc ++上编译静态模板函数

时间:2013-03-15 15:00:04

标签: c++ aix dbx

我们的源代码有一堆独立的静态模板函数。我需要使用IBM的本机xlc++编译器在AIX 7.1 Power 7系统上编译它。将static关键字与独立函数一起使用是一种过时的做法,xlc++不支持它,所以为了编译我的程序,我从函数声明中删除了该关键字。程序编译成功后,第一次运行崩溃(在Linux/g++上,它使用相同的输入数据完全稳定)。

我尝试使用dbx进行调试,但调试器抱怨internal errorsegmentation fault in extend_brk。没有使用内存配额,因此它不是内存/磁盘空间不足。系统配置为创建完整核心转储,程序使用-g选项编译。所有库都是静态链接的,因此在共享库中抛出异常不是问题。    1)是否可以在xlc++上编译静态模板函数而不删除static关键字,因此我可以确定所有代码与RHEL系统中的相同?    2)为什么调试器不起作用?

1 个答案:

答案 0 :(得分:0)

似乎我有32/64位可移植性问题,在这种情况下删除 static 关键字是无害的。 在我的.kshrc文件中添加以下行后,问题就消失了:

export OBJECT_MODE=64

默认情况下,IBM XL编译器以32位模式运行,即使在64位AIX 7.1系统上也是如此。要覆盖默认行为,程序员可以为编译器设置环境变量或提供-q64参数。