我有一个名为simple.c的c源文件(文件大小 68字节),我使用gcc编译它。输出二进制文件大小为 7151字节。
C源代码:
ID
我没有包含任何头文件。
我不知道,C二进制文件如何变得比源文件大。有人可以解释一下吗?
ID1 0.14
ID2 1.54
ID3 -0.48
以上是终端输出。
答案 0 :(得分:7)
即使不包含任何内容,您也有管理费用。有main()
之前运行的代码(设置stdin
,stdout
和stderr
,signal handler表等),以及在该功能之后运行的代码返回(例如检查用atexit()
和类似事物注册的任何内容)。这称为C运行时,传统上位于crt0.o
,它链接到任何可执行文件。
答案 1 :(得分:-1)
它是调试和符号信息。优化并剥离它:
gcc -Os
优化最小尺寸。strip a.out
删除符号和调试信息。还有CRT启动文件提供了处理argc,argv等并设置环境的大量二进制文件。您可以选择退出使用-nostartfiles
的人,但您可能不想这样做。