You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何无标准库的极简Rust库文件体积远大于C目标文件?

为何无标准库的极简Rust库文件体积远大于C目标文件?

最近我做了个小测试,对比极简的Rust静态库和C目标文件的体积,发现了一个有意思的现象,来跟大家聊聊:

首先是Rust部分,我写了一个极简的库文件simple_rust.rs,代码如下:

#![no_std]

pub fn add(a: i32, b: i32) -> i32 {
    a + b
}

用rustc 1.94.0版本编译,命令是:
rustc simple_rust.rs -C opt-level="z" --crate-type lib
编译后得到了libsimple_rust.rlib,大小是5248字节。

然后是C的部分,对应的文件simple_c.c代码很简单:

int add(int a, int b) {
    return  a+b;
}

用gcc 15.01版本编译,命令是:
gcc -c simple_c.c
得到的simple_c.o目标文件大小只有1288字节(测试环境都是Ubuntu Linux)。

这么一比,Rust生成的库文件体积大概是C目标文件的4倍大。

我之前了解到,Rust可执行文件通常比C大的原因是默认静态链接标准库,而C一般是动态链接。但这次的情况不一样啊——我写的Rust代码用了#![no_std],完全没用到标准库,按说两个文件都不会链接额外的库才对。

后来我查了些资料,发现Rust的.rlib文件里不只是包含机器目标代码,还附带了LLVM字节码、元数据以及符号表。我猜测这些额外的内容就是导致Rust库体积偏大的主要原因,但不确定是不是还有其他我没注意到的因素。

备注:内容来源于stack exchange,提问作者Angle.Bracket

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 18:33:03