【发布时间】:2022-11-19 03:28:14
【问题描述】:
是否可以在不依赖 glibc 的情况下使用 gcc 编译程序?
void main(){}
./libtest: /lib/x86_64-linux-gnu/libc.so.6: 版本`GLIBC_2.34' 不是 找到(./libtest 需要)
编辑:看来我不得不用 -nostdlib -nostartfiles -nodefaultlibs 编译
【问题讨论】:
是否可以在不依赖 glibc 的情况下使用 gcc 编译程序?
void main(){}
./libtest: /lib/x86_64-linux-gnu/libc.so.6: 版本`GLIBC_2.34' 不是 找到(./libtest 需要)
编辑:看来我不得不用 -nostdlib -nostartfiles -nodefaultlibs 编译
【问题讨论】:
是否可以在不依赖 glibc 的情况下使用 gcc 编译程序?
是的,还有其他
libc版本,例如 Musl、uClibc、dietLibc 等。请参阅它们的文档了解如何使用它们。你的问题没有出现成为 GLIBC 依赖项,而是您的构建与目标主机之间的不匹配。特别是,您的目标具有比构建主机更旧的 GLIBC。
最容易解决的那问题是建立在一个足够旧的系统上——你的二进制文件将在任何旧的或更新的系统上运行。您可以在 VM 或 docker 容器中执行此操作,因此您不必降级主系统。
您也可以静态链接您的程序(添加
-static标志),但要注意——对于许多重要的程序,这将使您的二进制文件较少的便携的。
【讨论】: