如何让C ++程序与AIX上的gcc堆栈保护程序功能链接?

时间:2009-08-28 19:29:00

标签: gcc aix

我是一个AIX新手。我正在尝试使用gcc的堆栈保护功能编译程序。我使用pware的GCC包在服务器上安装了gcc,我可以编译一个示例程序,如:

#include <stdio.h>

int main(int argc,char **argv)
{
  printf("hello world\n");

  return 0;
}

当我打开堆栈保护器时,我得到: g ++ -fstack-protector-all main.cpp collect2:找不到库libssp_nonshared

我一直在谷歌寻找解决方案,似乎我的libc需要有一些内置于我的内核没有。是否有一个包含内置堆栈保护的libc?

g ++ -v返回

Using built-in specs.
Target: powerpc-ibm-aix5.3.0.0
Configured with: ../stage/gcc-4.2.4/configure --disable-shared --enable-threads=posix --prefix=/opt/pware --with-long-double-128 --with-mpfr=/opt/pware --with-gmp=/opt/pware
Thread model: aix
gcc version 4.2.4

我在系统上找不到libssp_nonshared.a - 是否需要安装其他软件包,或者它是否附带gcc软件包?

1 个答案:

答案 0 :(得分:5)

这与libc无关:您的GCC安装缺少libssp_nonshared.a库。

您的"gcc --version"说什么?它可能已配置--disable-libssp选项(在这种情况下,您无法使用堆栈保护工具)。

更新:
我刚看了gcc-4.3.0/configure

 powerpc-*-aix*)
    noconfigdirs="$noconfigdirs gprof target-libgloss target-libssp ${libgcj}"
    ;;

我大约99%肯定这意味着libssp(因此-fstack-protector)不适用于您的平台。对不起: - (