链接器无法找到标准c库
问题描述:
我在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"
答
/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'。 –
你不应该用'g ++'编译吗? – Rakete1111
@ Rakete1111不,这是一个C库。 makefile不是我的。问题是整个gcc工具链似乎被破坏了。我重新安装它没有成功。 –
@TomášZato记住指定库时的顺序很重要。 –