链接器找不到标准的c库

时间:2017-05-24 16:57:11

标签: gcc shared-libraries centos7

我在CentOS上的库有些问题。我不确定是什么错。当我尝试制作一个项目时,我收到了这个错误:

gcc -Wall -Winline -O2 -fPIC -g -D_FILE_OFFSET_BITS=64  -o bzip2 bzip2.o -L. -lbz2
/usr/bin/ld: cannot find -lc
collect2: error: ld returned 1 exit status

我可以 - 并且确实 - 创建了一个将/usr/lib64/libc.so链接到/usr/lib64/libc-2.17.so的符号链接,但这只会产生另一个错误:

gcc -Wall -Winline -O2 -fPIC -g -D_FILE_OFFSET_BITS=64  -o bzip2 bzip2.o -L. -lbz2
/usr/lib/gcc/x86_64-redhat-linux/4.8.5/crt1.o: In function `_start':
(.text+0x12): undefined reference to `__libc_csu_fini'
/usr/lib/gcc/x86_64-redhat-linux/4.8.5/crt1.o: In function `_start':
(.text+0x19): undefined reference to `__libc_csu_init'
collect2: error: ld returned 1 exit status

显然工具链已经坏了。我该如何正确修复它?制作符号链接显然不能解决任何问题......

我还尝试使用yum group remove "Development Tools"然后yum group install "Development Tools"

重新安装整个开发工具链

1 个答案:

答案 0 :(得分:2)

/usr/lib64/libc.so不是符号链接,而是链接描述文件。

在Fedora上它包含:

/* GNU ld script
   Use the shared library, but some functions are only in
   the static library, so try that secondarily.  */
OUTPUT_FORMAT(elf64-x86-64)
GROUP ( /lib64/libc.so.6 /usr/lib64/libc_nonshared.a  AS_NEEDED ( /lib64/ld-linux-x86-64.so.2 ) )

而且,果然:

$ nm -C --defined-only /usr/lib64/libc_nonshared.a

elf-init.oS:
0000000000000070 T __libc_csu_fini
0000000000000000 T __libc_csu_init
...

/usr/lib64/libc.so属于glibc rpm。我建议重新安装。