【发布时间】:2011-09-13 21:21:52
【问题描述】:
我正在尝试使用 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
【问题讨论】:
-
为什么要剥离二进制文件?现代系统有如此多的空间,删除信息似乎有点多余。此外,在剥离的二进制文件上诊断问题实际上是不可能的。
-
你为什么不直接说
#include <iostream>而不是完整路径? -
@Tux-D 一个原因可能是逆向工程变得更加困难。
-
- Tux-D 不错,但原因很简单。编译、执行和剥离这个简单的程序是我注册的 c++ 课程中列出的一个练习。 - 标记 B,因为它将采用默认 iostream 而不是我新安装的 iostream,它与 gcc 4.6.0 编译器一起提供,大 255 字节..