Is there a way to compile Rust program without GLIBC?

Is there a way to make Rust executable portable between Linux versions? Currently I am getting:

./rb: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by ./rb)

I do not use any particular crate inside, just std. I just want that my program runs on any Linux, as for example java.

1 Like

You might be interested in alternative targets, like x86_64-unknown-linux-musl.

https://doc.rust-lang.org/rustc/platform-support.html#tier-2-with-host-tools

8 Likes

Thanks. It looks like I am currently out of a luck, because I need to install musl-gcc and probably other components.

Huh? Those are just needed on the build host, the final program can be statically linked with musl.

I recommend using GitHub - rust-cross/cargo-zigbuild: Compile Cargo project with zig as linker for easy cross compilation (including to same architecture but different libc). If that doesn't work (if you have C dependencies it can be finicky) consider GitHub - cross-rs/cross: “Zero setup” cross compilation and “cross testing” of Rust crates

Both of these can also be used to target older glibc if you prefer to do that instead.

1 Like

Thanks, it can be a solution. However I decided to provide a simple 3 steps building instruction including a setup of rustc. I tested the steps on Raspberry Pi and Windows Arm, and it seems worked. Thanks again.