为什么默认情况下不使用gcc编译二进制文件

Mar*_*ter 5 c gcc

当我编译程序时gcc -o myprog myprog.c,不会剥离生成的二进制文件:

myprog: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically 
linked (uses shared libs), for GNU/Linux 2.6.26, 
BuildID[sha1]=0x2697ed96b65e8a11239af0a44abc7896954b6e20, not stripped
Run Code Online (Sandbox Code Playgroud)

我想知道为什么gcc当我不提供任何调试参数时,默认情况下会生成非剥离的二进制文件。

是否应在编译后(即使用)剥离所有二进制文件strip myprog?还是具有二进制非剥离的优势?

AFAICS,在大多数二进制文件/bin//usr/bin/被剥离。

neo*_*neo 0

AFAIK 一旦二进制文件被剥离,您将无法取回剥离的信息,直到或除非您重新生成二进制文件。当您需要处理内存限制时,剥离非常有用。这可能是 GCC 中默认未启用 strip 的原因。