为什么可执行文件依赖于glibc?

ali*_*ice 3 rust

是因为Rust标准库通过glibc调用内核系统调用吗?但是在Rust本身编写系统调用包装器并不难吗?

Vla*_*eev 7

当一种语言基于C库时,其库调用通常如下所示:

Language API -> C API -> System API
Run Code Online (Sandbox Code Playgroud)

当一种语言不使用C库时,它的库直接调用委托给系统API:

Language API -> System API
Run Code Online (Sandbox Code Playgroud)

当您在中间使用C API时,语言API的实现将更容易编写,因为您几乎不需要编写任何特定于操作系统的代码.反过来,这又可以使语言更容易跨平台 - 您可以委托跨平台C库,而不是考虑如何使用具体的平台特定功能.

原则上,Rust中没有任何内容阻止您删除C库并直接使用系统调用.正如你所注意到的,Go正是这样做的.但是,对于libc的依赖并不认为Rust开发人员在标准库中编写大量特定于平台的代码是合理的.