如何使用旧的ABI编译Boost和GCC 5?

7

我下载了一个在GCC ABI变更之前使用GCC 4.8编译的库。

在我的笔记本电脑上(最新的Kubuntu),我有GCC 5.2。当我安装boost时,似乎它使用了新的ABI,但是然后我遇到了以下链接错误:

未定义的符号.....__cxx11....

如何使用旧的ABI和GCC5安装boost?

1个回答

12
据我所知,在官方的 Kubuntu 软件仓库中没有预构建的 Boost 包,因此您需要自行构建 Boost。构建过程在 这里 有文档记录。
确保您正在构建与构建库时使用的相同的 Boost 版本。如果定义了任何 Boost 配置宏,您还必须以类似的方式定义它们。否则,您可能会在构建的库和 Boost 之间遇到 ABI 不兼容性。
为了将 libstdc++ 切换到旧的 ABI,您还必须将 _GLIBCXX_USE_CXX11_ABI 定义为 0,如 这里 所述。例如:
b2 -j8 variant=release define=_GLIBCXX_USE_CXX11_ABI=0 stage

你在构建使用Boost和库的代码时,还需要定义宏。 define属性以及许多其他属性都在这里有文档记录。

2
感谢您的正确答案。我正在寻找的配置选项是“define”。我想为那些可能需要其他选项的人添加此链接。http://www.boost.org/build/doc/html/bbv2/overview/invocation.html - Issam T.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接