什么是我的exe文件中的所有垃圾信息?

问题描述 投票:0回答:2

我使用dev c ++ v5.11(用c语言)编写了一个非常简单的程序,我想看看HxD中的编译代码,看看它与原始代码的比较。问题是大约95%的编译信息看起来像垃圾信息,它似乎采用了9行代码并将其扩展到127 kb文件,有许多空格,错误处理字符串和一个包含许多空格的部分类型声明,以字符串格式。我的问题是,为什么这是一个东西,我可以使用什么其他程序来编译代码只要它需要?

原始代码:

#include <stdio.h>
int main() {
    int count = 0;
    start:
        count = count + 1;
        printf("count is %d\n", &count);
        goto start;
    return 0;
}

编译的代码太大而无法放入正文中

c exe
2个回答
2
投票

任何完整的答案都将特定于您的编译器,以及您构建程序的方式和主机系统。我将专注于一般性问题。

使用调试信息进行编译并且没有优化(通常是编译器的默认设置)将在可执行文件中产生大量额外信息。此外,还有链接选项,例如相关的静态链接和动态链接,它控制将库中的信息复制到可执行文件中(可执行文件的大小,依赖于可在运行时访问的库等等) )。

您的系统上可能还有实用程序(例如unix下的strip),以从可执行文件中删除一些不需要的信息。


1
投票

您可能会发现这篇文章很有趣,它试图获得Linux可执行文件的最小可执行文件大小:http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html

我想你的大部分可执行文件都是用stdio.h include中的代码来处理的。

您也可能对查看汇编输出感兴趣,而不是在HxD中查看它,您可以使用visual studio中的/ fa开关获取它。您可以在项目 - >属性 - >配置属性 - > C / C ++ - >输出文件下找到此设置。

© www.soinside.com 2019 - 2024. All rights reserved.