2015-05-27 55 views
1

我正在構建一個應用程序,它使用需要libstdC++。so.5的第三方庫。直到最近我還在使用libstdC++。so.6編譯我的應用程序,它工作正常,但它有一些可移植性問題。編譯時使用libstdC++。so.5沒有找到符號@ GLIBCPP_3.2

因此,我決定安裝g ++版本3.3.4,以便能夠使用libstdC++。so.5編譯我的應用程序。但是現在我根本無法編譯我的應用程序。無論是與我的老G ++,也沒有與3.3.4版的吧...構建應用程序報告以下錯誤信息:

/opt/ExPansion/lib/libexpansion.so: undefined reference to `std::basic_istream<char, std::char_traits<char> >::basic_istream(std::basic_streambuf<char, std::char_traits<char> >*)@GLIBCPP_3.2' 

編輯: 有趣的還可能是以下命令的輸出:

$ strings /usr/lib/libstdc++.so.5 | grep 'LIB'  
GLIBCPP_3.2 
GLIBCPP_3.2.1 
GLIBCPP_3.2.2 
GLIBCPP_3.2.3 
GLIBCPP_3.2.4 
GLIBC_2.0 
GLIBC_2.3 
GLIBC_2.1.3 
GLIBC_2.1 
GLIBC_2.2 
GLIBCPP_FORCE_NEW 

,這讓我納悶的唯一的事情是:

$ nm /usr/lib/libstdc++.so.5 
nm: /usr/lib/libstdc++.so.5: no symbols 

是, 「正常」 ?有沒有可能我的lib不包含所需的符號?我通過下載了這個LIB:

yum install compat-libstdc++-33 

..所以它不應該產生任何問題..

從我的理解@ GLIBCPP_3.2是由我的libstdC++ so.5的提供。那麼這裏可能會出現什麼問題?

+1

也許這個庫需要更新版本的libstdC++。看看這個版本是否列在這裏:「find/-name」libstdC++。so.5「2>/dev/null -exec strings {} \; | grep 'GLIBCPP'。 – fassl

+0

嗨,你的命令的輸出和下面的輸出是一樣的:$ strings /usr/local/lib/libstdc++.so.5 | grep'LIB'我用這個命令的輸出更新了我的問題。這對我們意味着什麼?我需要更新版本的libstdC++。so.5庫嗎? –

+0

我猜是這樣,或者舊版本的擴展庫或擴展庫用舊的gcc和舊的C++庫重新編譯。 – fassl

回答

相關問題