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



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

void main(){}

/libtest:/lib/x86_64-linux-gnu/libc.so.6:版本"GLIBC_2.34"不是找到(由./libtest要求(

EDIT:我似乎不得不使用-nostlib-nostartfiles-nodefaultlibs 进行编译

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

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

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

这个问题最简单的解决方案是在足够旧的系统上构建——二进制文件将在任何旧的或更新的系统上运行。您可以在VM或docker容器中执行此操作,因此不必降级主系统。

您也可以静态地链接您的程序(添加-static标志(,但要注意——对于许多非平凡的程序,这将使您的二进制不那么可移植。

最新更新