gpt4 book ai didi

c - 为什么编译 C 程序会产生这么长的二进制文件?

转载 作者:行者123 更新时间:2023-11-30 16:13:22 25 4
gpt4 key购买 nike

我听说当编译器编译代码时,它所做的就是创建一个包含机器可以执行的指令的文件。根据this video,一个简单的程序,如 int main(){ int i; i = 3; }编译时应该生成一个只有几个字节长的文件。那么为什么 clang 将其编译成一个几千字节长的文件呢?

最佳答案

这可能是由于一些 #include 语句将库与可执行文件或包含调试信息的编译器和链接器静态绑定(bind)。 当然,可执行文件还包含许多操作系统特定的数据/信息加起来就增加了大小,请参阅this question以获得更详细的答案。如果您需要一个小尺寸的可执行文件,this question 的答案中有很多建议。 .

编辑:阅读更多相关内容,大小归结为 C 是一种高级语言,因为它不直接与硬件通信,而是与操作系统对话。基本上,mainnot the entry point在你的程序被调用之前,还有很多事情要做。我强烈建议您阅读this blog post及其 follow-up最重要的是观看Matt Godbolt's insightful talk关于这个话题。这些都主要与 gcc 和 GNU/Linux 相关,但我认为可以公平地假设类似的原因也适用于其他操作系统上的可执行文件大小。

关于c - 为什么编译 C 程序会产生这么长的二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58055264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com