G ++编译器:选项-s已过时且被忽略C ++

时间:2011-09-13 21:21:53

标签: c++ macos g++

我正在尝试使用g ++编译器(Mac OSX上的4.6.0)在C ++中编译和删除一个非常简单的程序。但在编译时我会收到警告。


源代码:

#include </usr/local/Cellar/gcc/4.6.0/gcc/include/c++/4.6.0/iostream>

int main(){
    std::cout << ("Hello World\n") ;
}

终端代码:

g++ hello.cc -Wall -std=c++0x -s
    /* or an alternative: */
g++ hello.cc -Wall -std=c++0x -o test -Wl,-s

编译器警告:

ld: warning: option -s is obsolete and being ignored

有人对这个奇怪的警告有任何想法吗?

编辑:

奇怪的是,当使用-s标志时, 的大小减少,从9,216字节减少到9,008。

然而,当我使用以下内容时,大小减少到8,896字节。

cp hello hello_stripped
strip hello_stripped

2 个答案:

答案 0 :(得分:5)

错误消息来自ld,而不是来自gccg++。 (gccg++命令是调用编译器,链接器和其他工具的驱动程序。)

gcc-s选项传递给链接器,如gcc 4.6.1 manual中所述;显然gcc的MacOS端口仍然这样做。

GNU链接器(GNU ld)仍然接受具有其通常含义的-s选项。但是MacOS链接器(也称为ld)忽略它,如MacOS ld manual中所述:

  

-s完全剥离输出,包括删除符号表。       不再支持此文件格式变体。这个选项是       过时。

与{GNU的gcc手册不同,MacOS gcc manual没有提及“-s”。

答案 1 :(得分:2)

显然-s标志已过时。不过,您可以使用strip程序。