我写了一个Windows的C程序,并编译了它:cl test.c
,我注意到文件大小为95744字节。
我认为这很奇怪,所以我开始缩短程序,看看这是否会影响可执行文件的大小,但它保持不变,我最终只是编译了一个空的main函数,结果相同,我尝试在wsl2上编译相同的程序,用gcc test.c -o test
编译它,并在elf上运行size,输出:
text data bss dec hex filename
1224 544 8 1776 6f0 test
有谁知道为什么会这样,或者如何使输出更小?
任何帮助都将不胜感激。
1条答案
按热度按时间5tmbdcev1#
问题是
cl.exe
默认静态链接libc,这意味着C运行时库将嵌入到您的可执行文件中。这就是大部分文件大小的来源。选项/MD
将进行动态链接,以便在运行时可以找到这些函数。此外,像
/O2
这样的优化选项也将有助于减少结果可执行文件的大小。