2016-03-30 30 views
5

我已經下載了一個在GCC中ABI更改之前用gcc 4.8編譯的庫。如何使用舊的ABI編譯boost與GCC 5?

在我的筆記本電腦上(最新的kubuntu)我有GCC 5.2。當我安裝了提升,似乎它使用了新的ABI但後來我得到以下鏈接錯誤

未定義的符號.....__ cxx11 ....

我如何使用舊的ABI安裝升壓與GCC5?

回答

6

據我所知,Kubuntu官方倉庫中沒有針對舊ABI的預編譯Boost包,因此您必須自己構建Boost。建築過程記錄在here

確保您構建的是與構建庫時使用的Boost版本相同的版本。如果定義了任何Boost配置宏,則還必須以類似的方式定義它們。否則,您可能會遇到庫和Boost構建的ABI不兼容問題。

爲了將libstdC++切換到舊的ABI,您還必須將_GLIBCXX_USE_CXX11_ABI定義爲0,如here所述。例如:

b2 -j8 variant=release define=_GLIBCXX_USE_CXX11_ABI=0 stage 

您還需要在構建自己的使用Boost和庫的代碼時定義宏。

+2

感謝您的正確答案。 「define」是我正在尋找的配置選項。我想爲可能需要其他選項的人添加此鏈接。 http://www.boost.org/build/doc/html/bbv2/overview/invocation.html –