You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

旧CentOS用Conan 1.*管理Boost依赖时B2报错求助

解决旧CentOS上Conan 1.x构建Boost时B2找不到GLIBCXX版本的问题

问题原因

旧CentOS系统默认的/lib64/libstdc++.so.6版本过低,缺少B2所需的GLIBCXX_3.4.20/GLIBCXX_3.4.21版本。虽然你在Conan Profile的PATH中添加了devtoolset-12的路径,但Linux动态库加载依赖的是LD_LIBRARY_PATH环境变量,而非PATH,导致B2启动时无法找到正确的高版本libstdc++。

另外需要注意:Boost并非全是头文件库,多数组件(如thread、filesystem、system等)需要编译,因此会触发B2构建流程,这也是你遇到该问题的原因。

解决方案

1. 修正Conan Profile的环境变量配置

编辑你的Conan Profile文件,在[env]段添加LD_LIBRARY_PATH,指定devtoolset-12的库路径:

[settings]
os=Linux
os_build=Linux
arch=x86_64
arch_build=x86_64
compiler=gcc
compiler.version=12.2
compiler.libcxx=libstdc++11
build_type=Release
[options]
[build_requires]
[env]
PATH=/opt/rh/devtoolset-12/root/bin:/opt/rh/devtoolset-12/root/lib/gcc/x86_64-redhat-linux/12:/opt/rh/devtoolset-12/root/lib64
LD_LIBRARY_PATH=/opt/rh/devtoolset-12/root/lib64:/opt/rh/devtoolset-12/root/lib/gcc/x86_64-redhat-linux/12

2. 使用devtoolset的环境脚本启动Conan

如果手动配置环境变量容易出错,可以直接通过scl enable加载devtoolset-12的完整环境,再执行Conan命令:

scl enable devtoolset-12 'conan install ../../conanfile.txt --build missing'

该命令会自动设置好PATH、LD_LIBRARY_PATH等所有必要的环境变量,确保B2和编译器都使用devtoolset-12的版本。

3. 强制Boost仅使用头文件模式

如果确实只需要Boost的头文件组件,可以在Conan Profile的[options]段指定Boost仅构建头文件:

[options]
boost:header_only=True

这样Conan会跳过B2构建流程,直接使用Boost的头文件,从根源上避免B2的版本问题。

内容的提问来源于stack exchange,提问作者thebugger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 03:58:31