1

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

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

4

1 回答 1

0

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

export OBJECT_MODE=64

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

于 2013-03-20T14:33:04.053 回答