使用 gcc 编译时删除 glibc 依赖项

Removing glibc dependency when compiling with gcc

是否可以在不依赖 glibc 的情况下使用 gcc 编译程序?

void main(){}

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

Is it possible to compile a program using gcc without depending on glibc?

是的,还有其他 libc 版本,例如 Musl、uClibc、dietLibc 等。有关如何使用它们的信息,请参阅它们的文档。

您的问题似乎不是 GLIBC 依赖项,而是您的构建与目标主机之间的不匹配。特别是,您的目标具有比构建主机更旧的 GLIBC。

问题的最简单解决方案是在 old-enough 系统上构建——您的二进制文件将 运行 在 [=28] 的任何系统上=] 或更新版本。您可以在 VM 或 docker 容器中执行此操作,因此您不必降级主系统。

您也可以 link 您的程序静态地(添加 -static 标志),但要注意——对于许多 non-trivial 程序,这将使您的二进制 less便携。