2010-05-04 82 views
8

我試圖構建一個可以在多個Linux發行版上運行的二進制包。它是目前建在Ubuntu 10.04,但在Ubuntu 8.04與以下錯誤失敗:構建不需要最新glibc的軟件的最佳方法是什麼?

./test: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by ./test) 
./test: /usr/lib/libstdc.so.6: version `GLIBC_2.11' not found (required by ./test) 

什麼是解決這個問題的最佳方法?有沒有辦法在新盒子上安裝舊的glibc並構建它,還是必須構建舊版本?如果我建立一箇舊的glibc,它會工作在一個新的glibc?

或者,或者,我可以安裝一些方便的編譯器標誌或包來解決問題嗎?

回答

5

我發現的最佳解決方案是安裝運行Debian stable的虛擬機,並在此基礎上進行構建。 Debian穩定版已經夠老了,以至於用它構建的任何軟件包都可以在任何其他基於Debian的發行版上運行,例如Ubuntu。您可能需要解決在各種軟件的更高版本中已修復但未反饋到Debian stable的非關鍵性錯誤。

+0

我認爲這意味着建立在古代版本的glibc上仍然可以在新版本的glibc上正常工作? – ZorbaTHut 2010-05-04 23:13:31

+0

據我所知,是的......讓我這樣說,它還沒有出錯。 ;-) – ptomato 2010-05-04 23:43:19

1

如果您確實想確保它在每個最新的發行版上運行,您可能還會考慮靜態鏈接到您選擇的libC。但是,如果您使用僅由較新的內核提供的功能(例如較新的系統調用),則可能仍會遇到問題。

相關問題