为什么从相同的 c/c++ 源代码编译而来的“.exe”比“.out”大得多?
Why are ".exe" much bigger than ".out" when they are compiled from the same c/c++ source code?
考虑以下 c/c++ 代码:
int main () {
int a = 1;
int b = 2;
int c = a + b;
}
当我在 Windows 上使用 g++ (MinGW-W64 项目) 编译时,.exe 文件最终为 53KB
但是当我在 Ubuntu 上用 g++ 编译它时,.out 文件最终只有 8KB
为什么两个输出文件的大小相差这么大?
可执行文件不仅包含编译后的代码,还包含附加信息,这些信息因不同的可执行文件格式而异。
通过对您显示的代码进行优化,将完全优化掉,即使没有优化,给定的代码也只会产生几个字节的机器代码。所以对于你的程序来说,~53KB 和~8KB 是可执行文件的元信息的大小。
考虑以下 c/c++ 代码:
int main () {
int a = 1;
int b = 2;
int c = a + b;
}
当我在 Windows 上使用 g++ (MinGW-W64 项目) 编译时,.exe 文件最终为 53KB
但是当我在 Ubuntu 上用 g++ 编译它时,.out 文件最终只有 8KB
为什么两个输出文件的大小相差这么大?
可执行文件不仅包含编译后的代码,还包含附加信息,这些信息因不同的可执行文件格式而异。
通过对您显示的代码进行优化,将完全优化掉,即使没有优化,给定的代码也只会产生几个字节的机器代码。所以对于你的程序来说,~53KB 和~8KB 是可执行文件的元信息的大小。