【发布时间】:2015-10-04 06:51:05
【问题描述】:
我有一个名为 simple.c 的 c 源文件(文件大小 68 字节),我使用 gcc 编译它。输出二进制文件大小为 7151 字节。
C源代码:
int main()
{
int a = 10;
int b = 34;
int c = a + b;
return c;
}
我没有包含任何头文件。
我不知道,C 二进制文件是如何变得比源文件大的。谁能解释一下?
test@test-desktop:~/Desktop/c$ ls -l
total 4
-rw-rw-r-- 1 test test 68 Jul 15 15:04 simple.c
test@test-desktop:~/Desktop/c$ gcc simple.c
test@test-desktop:~/Desktop/c$ ls -l
total 12
-rwxrwxr-x 1 test test 7151 Jul 15 15:04 a.out
-rw-rw-r-- 1 test test 68 Jul 15 15:04 simple.c
以上是终端输出。
【问题讨论】:
-
在上述问题中,他们有#included 标准头文件。但是,我没有包含任何头文件。
-
main 不是第一个被调用的函数。编译器在 main 周围添加了一些包装器,然后调用 main。该包装器需要空间。
-
我会接受你的观点@WernerHenze。可以发个参考链接吗?
-
源输入大小和可执行输出大小之间没有联系。证明 #1:删除源代码中的所有可选空格。可执行文件的大小将与现在相同。证明 #2:在每个语句之间添加 long cmets。可执行文件的大小相同。
-
@Valarpirai 我没有可用的链接,但是“crt startup”是谷歌的一个很好的组合,可能添加你特定的编译器 gcc。