我正在構建一個應用程序,它使用需要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的提供。那麼這裏可能會出現什麼問題?
也許這個庫需要更新版本的libstdC++。看看這個版本是否列在這裏:「find/-name」libstdC++。so.5「2>/dev/null -exec strings {} \; | grep 'GLIBCPP'。 – fassl
嗨,你的命令的輸出和下面的輸出是一樣的:$ strings /usr/local/lib/libstdc++.so.5 | grep'LIB'我用這個命令的輸出更新了我的問題。這對我們意味着什麼?我需要更新版本的libstdC++。so.5庫嗎? –
我猜是這樣,或者舊版本的擴展庫或擴展庫用舊的gcc和舊的C++庫重新編譯。 – fassl