gpt4 book ai didi

c - 为什么静态链接的 "hello world"程序这么大(超过 650 KB)?

转载 作者:行者123 更新时间:2023-12-05 09:28:07 24 4
gpt4 key购买 nike

考虑以下程序:

#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 和其他东西,但仍然有点庞大。

注意事项:

  • 操作系统:Devuan GNU/Linux Chimaera(~= Debian Bullseye)
  • 编译器:GCC 10.2
  • libc: glibc 2.31-13
  • 处理器架构:x86_64
  • 如果我使用 -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/

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