2014-12-01 369 views
1

我有一個應用程序在本地編譯ldd版本 (Ubuntu EGLIBC 2.15-0ubuntu10.4) 2.15,我需要在ldd version 2.12的服務器上運行。由於它是在QT框架中構建的,並且我沒有root權限來安裝框架或升級libc.so.6,所以我需要在我的機器上安裝一個較舊的glibc,以便編譯,如此post。從下載hereglibc-2.11.2.tar.gz後嘗試使用命令./configure --prefix=/usr/oldlibc安裝它,它會顯示以下錯誤:在ubuntu上安裝glibc 11精確(12.04)

/bogdan/Downloads/safe/csu/crti.o 
/tmp/ccHNBWLa.s: Assembler messages: 
/tmp/ccHNBWLa.s: Error: open CFI at the end of file; missing .cfi_endproc directive 
/tmp/ccHNBWLa.s: Error: open CFI at the end of file; missing .cfi_endproc directive 
make[2]: *** [/home/bogdan/Downloads/safe/csu/crti.o] Error 1 
make[2]: Leaving directory `/home/bogdan/Downloads/glibc-2.11/csu' 
make[1]: *** [csu/subdir_lib] Error 2 
make[1]: Leaving directory `/home/bogdan/Downloads/glibc-2.11' 
make: *** [all] Error 2 

我能做些什麼來正確安裝libc.so.6

+1

靜態構建應用程序?不要在運行的系統上降級glibc。你可以在vm上安裝ubuntu10.04並在那裏建立。 – 2014-12-02 06:35:20

+0

@ElliottFrisch,我已經試過了,但這次我有intalling opencv2問題。我沒有發現任何存儲庫有opencv2 – courage 2014-12-02 07:04:18

+0

在你的問題中沒有提到,但你可以得到的源代碼,並建立它。降級glibc會破壞你擁有的任何opencv2。 – 2014-12-02 07:09:56

回答

0

我有LDD版本

你錯了,在陳述ldd版本本地編譯一個應用程序。該lddglibc一部分,它的glibc版本,是造成你的悲傷。該ldd本身什麼做任何事情在這裏。

/tmp/ccHNBWLa.s: Error: open CFI at the end of file; missing .cfi_endproc directive

發生這種情況,因爲舊glibc-2.11不能與你有你的系統上的新gcc建造。

你能砍上glibc源和解決這個問題,你可以建造和安裝舊gcc並使用建立glibc-2.11,或者你可以建立一個chroot環境安裝在默認的地方老的glibc。

chroot的解決方案可能是最容易的,因爲你可以預先構建的(舊的)包只需安裝進去。

另一個「容易」的另一種方法是在一個虛擬機建立的一切。