gpt4 book ai didi

c - 无法使用 gcc -static 链接程序

转载 作者:太空宇宙 更新时间:2023-11-04 08:25:27 27 4
gpt4 key购买 nike

我正在尝试使用 gcc 编译和链接以下代码:

#include <stdlib.h>

main()
{
exit(0);
}

我正在使用 gcc -static -o exit exit.c

我收到以下错误:

/usr/bin/ld: cannot find -lc
collect2: ld returned 1 exit status

这是什么意思,我该如何解决?

最佳答案

特别是,这意味着它无法找到 C 库的 static 版本,因为您正在使用 -static 进行编译。这意味着它不能使用标准的共享库,通常类似于 /lib/libc.so

为了支持构建静态二进制文件,您需要安装适当的静态库 (libc.a),它可能会或可能不会以预打包格式提供给您的分发版。在 Fedora 下,它作为 glibc-static 包提供:

yum install glibc-static

安装此包后,我可以从您的示例代码构建静态二进制文件而不会出现问题:

$ gcc -static -o exit exit.c
$ file exit
exit: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux),
statically linked, for GNU/Linux 2.6.32,
BuildID[sha1]=12c642ecc01622c623c2efa5efa7e23d73889808, not stripped

其他解决方案包括自己构建静态 C 库,或使用专为嵌入设计的较小 C 库,例如 uclibcmusl .这些更小,通常更适合静态链接。这可能涉及您自己构建库。

关于c - 无法使用 gcc -static 链接程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30721939/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com