我应该在旧的 Ubuntu 版本上进行编译以获得最大的“glibc”可移植性吗?

zin*_*ino 5 glibc libc rust

我正在编译 Rust 代码以用作 CLI。

我希望它可以安装在尽可能广泛的x86_64-unknown-linux-gnu基础系统上,特别是 Ubuntu 系统。

我使用 docker 基础映像FROM rust:latest进行构建,但此编译主机具有 glibc v2.29。

当我尝试在另一个 Debian 系统上运行二进制文件时,(Debian GLIBC 2.28-10) 2.28它退出并出现错误:

clix: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by clix)
Run Code Online (Sandbox Code Playgroud)

那么这是否意味着我需要在旧版 Ubuntu ( ubuntu:16.04) 上进行编译才能支持 Ubuntu 16 及更高版本?

有没有一种替代方案可以让我rust:latest在旧的 Ubuntu 操作系统上进行编译并让我的二进制文件工作?

有关的:

Emp*_*ian 0

那么这是否意味着我需要在旧的 Ubuntu (ubuntu:16.04) 上进行编译才能支持 Ubuntu 16 及更高版本?

这是最简单的解决方案。

有没有一种替代方案可以让我在 rust:latest 上进行编译并让我的二进制文件在旧的 Ubuntu 操作系统上工作?

是的:您可以自己构建一个 Linux 到旧版 Linux 的交叉编译器,并使用它在rust:latest. 这并不是一件微不足道的事情,通常“基于旧版本构建”是更直接的解决方案。