我试图弄清楚为什么 GCC 生成的二进制文件如此之大。
考虑这个空程序:
int main() {
return 0;
}
Run Code Online (Sandbox Code Playgroud)
现在我使用GCC 9.2.1 20190827 (Red Hat 9.2.1-1)和glibc 2.29构建它,没有任何附加参数:
gcc -o test test.c
生成的二进制文件为 21984 字节 (~22 KB)。查看使用 生成的文件xxd,在多个地方有大量的空字节:
00000370: 006c 6962 632e 736f 2e36 005f 5f6c 6962 .libc.so.6.__lib
00000380: 635f 7374 6172 745f 6d61 696e 0047 4c49 c_start_main.GLI
00000390: 4243 5f32 2e32 2e35 005f 5f67 6d6f 6e5f BC_2.2.5.__gmon_
000003a0: 7374 6172 745f 5f00 0000 0200 0000 0000 start__.........
000003b0: 0100 0100 0100 0000 1000 0000 …Run Code Online (Sandbox Code Playgroud)