4

只是出于好奇,我想知道为什么我的编译.C文件(大约 2-5 kb)比我的可执行文件(.exe)文件(130-200 kb)小?

4

3 回答 3

4

您的编译器源文件只是从实际源文件生成的代码,仅此而已。可执行文件已与您需要的所有外部函数和变量所需的其他目标文件和库链接。这当然会使可执行文件更大,因为它包含更多代码。

于 2013-09-05T19:25:24.323 回答
2

可能有很多原因:

  • 编译器可以静态链接依赖库,这实际上是将机器代码复制到生成的可执行文件中
  • 汇编通常比源代码占用更多的空间——一行代码可以编译成几行汇编(将数据移入/移出寄存器等)
于 2013-09-05T19:26:26.033 回答
2

这里

DJGPP 程序需要捆绑各种 pmode 驱动程序,这些驱动程序通常在 rmode 中通过 BIOS 完成。诸如内存管理、磁盘访问、控制台访问、硬件访问等。本质上,DJGPP 在您的可执行文件中嵌入了一个迷你操作系统!

于 2013-09-05T19:29:57.747 回答