2017-05-24 69 views
0

我在CentOS上有一些库问题。我不确定有什么问题。当我尝试做一个项目,我得到这个错误:链接器无法找到标准c库

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"

+0

你不应该用'g ++'编译吗? – Rakete1111

+0

@ Rakete1111不,这是一个C库。 makefile不是我的。问题是整个gcc工具链似乎被破坏了。我重新安装它没有成功。 –

+0

@TomášZato记住指定库时的顺序很重要。 –

回答

1

/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转。我建议重新安装它。

+0

谢谢,我会尝试重新安装'glibc'。 –