考虑以下程序:
#include <stdio.h>
int main(void)
{
printf("hello world\n");
return 0;
}
如果我使用 GCC 构建它,优化大小并使用静态链接,然后剥离它以进一步减小大小(可能):
$ gcc -Os -static hello.c -o hello
$ strip hello
我得到一个大小约为 695 KB 的可执行文件。
为什么这么大?我意识到这不只是我的目标代码,还有 stub 和其他东西,但仍然有点庞大。
注意事项:
-O3 -flto
构建它并没有改善。最佳答案
部分答案:可执行文件的膨胀大小......
printf
的使用有任何关系吗? .<stdio.h>
有任何关系吗? .为什么?因为即使你编译一个空程序:
int main(void)
{
return 0;
}
您仍然获得相同的 695 KB 可执行文件。
感谢@SparKot 指出这个方向的评论。
关于c - 为什么静态链接的 "hello world"程序这么大(超过 650 KB)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71755641/