我正在尝试使用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") ;
}
Run Code Online (Sandbox Code Playgroud)
终端代码:
g++ hello.cc -Wall -std=c++0x -s
/* or an alternative: */
g++ hello.cc -Wall -std=c++0x -o test -Wl,-s
Run Code Online (Sandbox Code Playgroud)
编译器警告:
ld: warning: option -s is obsolete and being ignored
Run Code Online (Sandbox Code Playgroud)
有人对这个奇怪的警告有任何想法吗?
编辑:
奇怪的是,使用-s标志时,大小确实减少,从9,216字节减少到9,008.
但是当我使用以下内容时,大小减少到8,896字节.
cp hello hello_stripped
strip hello_stripped
Run Code Online (Sandbox Code Playgroud)
错误消息来自ld,而不是来自gcc或g++.(gcc和g++命令是调用编译器,链接器和其他工具的驱动程序.)
gcc将-s选项传递给链接器,如gcc 4.6.1手册中所述 ; 显然MacOS端口gcc仍然这样做.
GNU链接器(GNU ld)仍然接受-s具有其通常含义的选项.但MacOS链接器(也称为ld)忽略它,如MacOS ld手册中所述:
-s完全剥离输出,包括删除符号表.不再支持此文件格式变体.此选项已过时.
与GNU的gcc手册不同,MacOS gcc手册没有提到"-s".
| 归档时间: |
|
| 查看次数: |
4571 次 |
| 最近记录: |