2013-03-15 65 views
1

我们的源代码有一堆独立的静态模板函数。我需要使用IBM的原生xlc++编译器在AIX 7.1 Power 7系统上进行编译。将static关键字与独立函数一起使用已经过时,并且它不受xlc++的支持,所以为了让我的程序编译,我从函数声明中删除了该关键字。程序编译成功后,第一次运行崩溃(在Linux/g++上,它对于相同的输入数据非常稳定)。在AIX 7.1上编译静态模板函数xlC++

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

回答

0

看来我有32/64位可移植性问题,在这种情况下删除static关键字是无害的。 问题已经消失后,我添加了下面一行在我的.kshrc文件:

export OBJECT_MODE=64 

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