c# windows c编译器生成大型可执行文件

y0u0uwnf  于 2023-06-20  发布在  C#
关注(0)|答案(1)|浏览(227)

我写了一个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

有谁知道为什么会这样,或者如何使输出更小?
任何帮助都将不胜感激。

5tmbdcev

5tmbdcev1#

问题是cl.exe默认静态链接libc,这意味着C运行时库将嵌入到您的可执行文件中。这就是大部分文件大小的来源。选项/MD将进行动态链接,以便在运行时可以找到这些函数。
此外,像/O2这样的优化选项也将有助于减少结果可执行文件的大小。

相关问题