我开始在Rust中编程,我注意到的第一件事就是Rust生成大型二进制文件。例如,Rust" Hello world!"二进制大约600K,而等效的C二进制大约是~8K。
经过一番搜索,我发现this SO帖子解释了Rust二进制文件很大,因为所有需要的库都是静态链接的。但是C的情况也不是这样吗?当我在C中写#include <stdio.h>
时,我是否静态链接相关的I / O库?我一直认为答案是“是”&#39;但现在我怀疑自己。
答案 0 :(得分:3)
#include
将文件内容复制到源文件中,但如果标题只是函数声明,那么所有操作都会告诉程序这些函数可用于在你的代码中调用。实际的实现可能在另一个需要链接(静态或动态)到可执行文件的文件中定义。如果你查看stdio.h
的标题,你会发现它只包含函数原型。
许多编译器提供了为标准库执行静态或动态链接的选项。