【问题标题】:MinGW - why is the C 'hello world' executable 42kb?MinGW - 为什么 C 'hello world' 可执行文件是 42kb?
【发布时间】:2016-11-19 13:33:08
【问题描述】:

如果我用 MinGW 编译 C hello world,生成的 exe 是 42Kb。如果我使用 Tiny C 编译器,我会得到 2Kb。 (在这两种情况下都没有指定任何选项或做任何有趣的事情,只需 gcc hello.c -o hello.exe)

现在我知道需要最少的启动代码;但是 mingw 放在那里的额外 40kb 的东西是什么,它有什么作用,为什么需要它?

【问题讨论】:

标签: c windows gcc tcc


【解决方案1】:

来自the FAQ

调试信息

可执行文件大于的最常见原因 预期的是它们包含调试信息,即 在使用 GCC 的“-g”选项编译源文件时生成。 即使您自己的源文件在没有调试的情况下编译 信息,与您的可执行文件链接的库可能已经 用“-g”编译(可能包括系统库 与 MinGW 一起分发)。

要从可执行文件中排除调试信息,只需使用 “strip”命令将其删除,或者使用“-s”选项 链接时。

UPX(可执行文件的终极打包程序)

UPX 是一种可以减少 可执行文件的大小,使用非常快速和非常有效的就地 压缩/解压。它适用于 Windows 和 Linux 可执行文件 并且可免费用于所有应用程序(包括商业应用程序)。

【讨论】:

  • 这是否缺少使用共享库或静态库?
  • 模板、C++、异常和 RTTI 与 C 题有什么关系?
  • 我正在从 MinGW 文档中添加一个完整的答案,最重要的还是调试信息。
  • 我没有使用 -g 选项编译它,正如我在问题中所说的那样,所以调试的东西应该只来自链接库。但是 strip 只是将结果减少到 20kb,所以那里似乎还有很多额外的东西......
  • 你使用的是 对吧?好吧,那么它必须添加来自 stdio 的所有东西
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-27
  • 2011-09-12
  • 1970-01-01
  • 1970-01-01
  • 2013-04-25
相关资源
最近更新 更多