【问题标题】:Compiling static template functions on AIX 7.1 xlc++在 AIX 7.1 xlc++ 上编译静态模板函数
【发布时间】:2013-03-04 08:31:42
【问题描述】:

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

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

【问题讨论】:

    标签: c++ aix dbx


    【解决方案1】:

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

    export OBJECT_MODE=64
    

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

    【讨论】:

      猜你喜欢
      • 2015-12-28
      • 2013-12-10
      • 2015-06-21
      • 1970-01-01
      • 2019-05-12
      • 2013-09-29
      • 2018-03-15
      • 2013-03-11
      • 2014-08-02
      相关资源
      最近更新 更多