make程序时ld报错的DEBUG方法

make程序的时候出现ld报错:

/usr/bin/ld: cannot find -ly
collect2: ld returned 1 exit status
make: *** [bnK-lang] Error 1

参考 usr/bin/ld: cannot find -l 原来可以通过设置make的DEBUG方式找到报错原因

LD_DEBUG=all make

这里出现的报错如下

     15208:     calling fini: /lib64/libc.so.6 [0]
     15208:
     15207:     symbol=dcgettext;  lookup in file=make [0]
     15207:     symbol=dcgettext;  lookup in file=/lib64/libc.so.6 [0]
     15207:     binding file make [0] to /lib64/libc.so.6 [0]: normal symbol `dcgettext' [GLIBC_2.2.5]
     15207:     symbol=__fprintf_chk;  lookup in file=make [0]
     15207:     symbol=__fprintf_chk;  lookup in file=/lib64/libc.so.6 [0]
     15207:     binding file make [0] to /lib64/libc.so.6 [0]: normal symbol `__fprintf_chk' [GLIBC_2.3.4]
make: *** [bnK-lang] Error 1
     15207:     symbol=chdir;  lookup in file=make [0]
     15207:     symbol=chdir;  lookup in file=/lib64/libc.so.6 [0]
     15207:     binding file make [0] to /lib64/libc.so.6 [0]: normal symbol `chdir' [GLIBC_2.2.5]
     15207:     symbol=exit;  lookup in file=make [0]
     15207:     symbol=exit;  lookup in file=/lib64/libc.so.6 [0]
     15207:     binding file make [0] to /lib64/libc.so.6 [0]: normal symbol `exit' [GLIBC_2.2.5]
     15207:
     15207:     calling fini: make [0]
     15207:
     15207:
     15207:     calling fini: /lib64/libc.so.6 [0]

/usr/bin/ld: cannot find -lc

在CentOS 8上编译一个简单的c程序,Makefile中指定编译成静态库

  • Makefile

  • pause.c

  • 执行 make 报错:

原因参考 /usr/bin/ld: cannot find -lc while compiling with makefile

/usr/bin/ld: cannot find -lc 报错表示linker找不到静态链接你的库程序的C库。你需要通过 locate libc.a 查看一下系统中是否存在 libc.a 库文件。如果不存在,则需要安装 glibc-static 软件包。

不过,上述 glibc-static 软件包在默认repo仓库通道中没有启用,参考 No package glibc-static available

对于CentOS 8,需要激活 PowerTools 仓库:

然后就可以安装

现在可以编译了

Last updated

Was this helpful?