2013-01-01 63 views
1

我曾經構建並安裝了gcc和binutils,前綴爲錯誤(--prefix=/home/.../usr)傳遞給配置腳本。更改gcc/binutils - 前綴

現在我重新配置,重建和重新安裝gcc和binutils的與正確的前綴(--prefix=/usr),但是編譯總是失敗:

$ /bin/ld: cannot find /home/../usr/lib/libc.so.6 

當然,我可以符號鏈接庫,爲了得到它的工作,但我想知道在哪個文件中保存這些路徑以及如何更改它們。

+2

你的'/ etc/ld.so.conf'說了什麼? – favoretti

+3

用'gcc -v'編譯時會說什麼?另外,別忘了運行'ldconfig' –

+0

我建議運行'ldd/bin/ld';它可能是在錯誤的地方尋找C庫。在重新構建它(並重新安裝它)之前,它很可能會繼續看錯地方。作爲臨時創可貼,在指向'/ lib/libc.so.6'的'錯誤'地方創建一個符號鏈接。這可能會讓它充分發揮作用。要非常小心地更換系統自己的編譯器工具;我從來沒有冒險過,並且總是將我自己的版本安裝到不同的目錄中(例如'/ usr/gnu'或'/ usr/gcc')。如果您覆蓋系統版本,請先將其備份。 –

回答

0

現在我重新配置,重建和重新安裝gcc和binutils的與正確的前綴(前綴=/USR),但是編譯總是失敗:

$ /斌/勞工處:找不到的/ home/../usr/lib/libc.so.6

您可能沒有重建並重新安裝libc,並且錯誤來自它。

在Linux上,libc.so是一個鏈接腳本,與此類似:

/* 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 (/lib/x86_64-linux-gnu/libc.so.6 /usr/lib/x86_64-linux-gnu/libc_nonshared.a AS_NEEDED (/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2)) 

我敢打賭,你的libc.so中有/home/../usr/lib/libc.so.6