2013-05-16 34 views
0

我在Red Hat Linux rel 5.5上使用g ++ 4.1.2和Boost 1.53。鏈接過程中有一個問題,我不清楚。我得到的錯誤信息:鏈接階段使用Boost 1.53時未定義的引用

/usr/local/boost_1_53_0/stage/lib/libboost_thread.so: 
undefined reference to  `std::bad_exception::what() [email protected]_3.4.9' 

/usr/local/boost_1_53_0/stage/lib/libboost_thread.so: 
undefined reference to `std::bad_alloc::what() [email protected]_3.4.9' 

collect2: ld returned 1 exit status 

似乎有可能與我與鏈接libstdc++.so文件版本的一個問題。如果我交替隱藏並顯示這個文件,我可以讓我的程序鏈接。但是,我希望能夠像我在引入Boost庫和併發線程之前一樣「製作」。

如果您有任何見解,請幫助解決此問題。

+1

你能顯示你的鏈接器命令行嗎? –

回答

0

請嘗試安裝通過yum

yum install boost 你不會遇到這樣的問題。

嘗試包含rpmforge和epel yum存儲庫。

+0

您不會從'yum'獲得Boost 1.53 –

0

http://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html#abi.versioning表明GLIBCXX_3.4.9是從GCC 4.2.0使用的libstdc++.so符號版本,所以如果Boost庫希望該版本那麼就意味着它與GCC 4.2.x版

編譯這意味着你可以」 t使用庫與GCC 4.1.2鏈接的程序,您需要鏈接到GCC 4.2.0或更高版本

libstdc++.so向後兼容,但不兼容,因此您可以編譯一個版本的程序並鏈接它到更新的版本,但不能編譯更新的版本並鏈接到較舊的版本。

+0

我試圖鏈接到gcc 4.2.4版本,以便體驗相同的問題。有沒有人有任何想法? – cookinbag

+0

你一定是做錯了。如果你與GCC 4.2正確鏈接,那麼你會得到'GLIBCXX_3.4.9'符號版本。 –

相關問題