2017-05-24 71 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'。 –