c二进制文件大于源文件

时间:2015-07-15 09:43:08

标签: c gcc binary

我有一个名为simple.c的c源文件(文件大小 68字节),我使用gcc编译它。输出二进制文件大小为 7151字节

C源代码:

ID

我没有包含任何头文件。

我不知道,C二进制文件如何变得比源文件大。有人可以解释一下吗?

ID1      0.14
ID2      1.54
ID3     -0.48

以上是终端输出。

2 个答案:

答案 0 :(得分:7)

即使不包含任何内容,您也有管理费用。有main()之前运行的代码(设置stdinstdoutstderrsignal handler表等),以及在该功能之后运行的代码返回(例如检查用atexit()和类似事物注册的任何内容)。这称为C运行时,传统上位于crt0.o,它链接到任何可执行文件。

答案 1 :(得分:-1)

它是调试和符号信息。优化并剥离它:

  1. 使用gcc -Os优化最小尺寸。
  2. 使用strip a.out删除符号和调试信息。
  3. 还有CRT启动文件提供了处理argc,argv等并设置环境的大量二进制文件。您可以选择退出使用-nostartfiles的人,但您可能不想这样做。