【问题标题】:Removing glibc dependency when compiling with gcc使用 gcc 编译时删除 glibc 依赖项
【发布时间】: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 编译

【问题讨论】:

    标签: gcc glibc


    【解决方案1】:

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

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

    你的问题没有出现成为 GLIBC 依赖项,而是您的构建与目标主机之间的不匹配。特别是,您的目标具有比构建主机更旧的 GLIBC。

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

    您也可以静态链接您的程序(添加 -static 标志),但要注意——对于许多重要的程序,这将使您的二进制文件较少的便携的。

    【讨论】:

    • “您也可以静态链接您的程序(添加 -static 标志)” - 何时何地添加此标志?
    猜你喜欢
    • 2011-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    • 2019-03-19
    • 2016-04-05
    • 1970-01-01
    相关资源
    最近更新 更多