2011-03-12 46 views
3

我在我的一個Ubuntu 10.10主機上編譯了gcc,並將它安裝在/ c中。我可以編譯C和C++程序在該主機上正常,但當I/C(其中包含斌的libexec等)複製到Ubuntu的主10.04.2我得到:GCC將編譯版本複製到另一個主機時編譯錯誤

/c/libexec/gcc/i686-pc-linux-gnu/4.5.2/cc1: error while loading shared libraries: libmpc.so.2: cannot open shared object file: No such file or directory 
編譯一個簡單的.c文件時

我也從源碼安裝並編譯了gmp,mpfr和mpc(與我在10.10主機上的版本相同),但它仍然出現相同的錯誤。

我不是每個主機上重新編譯gcc的原因是因爲它花費的時間太長,並且不希望使用GCC(從構建基本)DEB附帶Ubuntu的

請幫

+0

是系統規格完全相同一樣?需要注意的是,預編譯的二進制文件可能不適用於不同的體系結構(即x86,x86_64等) - 另外,我沒有意識到Ubuntu版本的差異,但這也可能造成問題。你最好的選擇是在你的第二臺機器上重新編譯,如果你想確保它的工作是最佳的。 – RageD 2011-03-12 04:39:09

+0

@RageD這兩個主機是相同的拱:uname -m i686 – Daniel 2011-03-12 04:40:52

回答

8

是否導出了LD_LIBRARY_PATH環境變量?看看這個錯誤,它無法找到libmpc.so.2。

嘗試「找到libmpc.so.2」,如果你能找到, 出口LD_LIBRARY_PATH =

+0

是否有可能將gcc編譯爲靜態?所以它編譯後不依賴於gmp,mpfr,mpc? – Daniel 2011-03-12 04:45:41

+0

@rjoshi出口LD_LIBRARY_PATH工作!謝謝。但關於我的最後一個問題「是否有可能將gcc編譯爲靜態的?所以在編譯之後它不依賴於gmp,mpfr,mpc?」可能嗎? – Daniel 2011-03-12 04:54:17

+1

@Daniel:是的,你可以通過傳遞完整的庫路徑來編譯靜態。當你編譯時,給路徑爲-L/usr/local/lib/libgmp.a – rjoshi 2011-03-12 04:54:41