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

升级Boost后运行测试可执行文件出现GLIBCXX版本缺失错误

GLIBCXX版本缺失错误:成因与解决方法

成因

  • 你使用的gcc-11.3对应的libstdc++.so.6包含GLIBCXX_3.4.26、GLIBCXX_3.4.29等高版本符号,但运行测试程序时,系统默认的libstdc++.so.6版本过低,无法提供这些符号支持。
  • Boost 1.80 Beta相比1.58,引入了更多C++20特性或依赖了更新的标准库实现,导致编译出的测试程序绑定了这些高版本GLIBCXX符号,旧系统库无法适配。

解决方法

1. 指定运行时加载gcc-11.3的libstdc++库

运行测试程序前,通过LD_LIBRARY_PATH指定gcc-11.3对应的库目录,让程序优先加载该版本的libstdc++:

LD_LIBRARY_PATH=/usr/local/gcc-11.3/lib64 ./Test_address

替换/usr/local/gcc-11.3/lib64为你实际的gcc-11.3安装路径,比如部分系统路径为/usr/lib/gcc/x86_64-linux-gnu/11。

2. 静态链接libstdc++库

编译时添加-static-libstdc++参数,将libstdc++静态嵌入可执行文件,彻底避免动态库版本依赖问题:

g++ -std=c++20 -static-libstdc++ [你的源文件] -o Test_address -lboost_unit_test_framework

注意:静态链接会增大可执行文件体积,但无需考虑运行环境的库版本。

3. 更新系统libstdc++库

如果有系统权限,直接升级系统的libstdc++6包(适用于Debian/Ubuntu系):

sudo apt update && sudo apt install --only-upgrade libstdc++6

⚠️ 注意:升级系统库可能影响依赖旧版本库的其他程序,操作前需确认兼容性。

4. 重新编译Boost 1.80 Beta

如果你的Boost是预编译包,可能是用更高版本gcc编译的,导致依赖更高的GLIBCXX符号。请用gcc-11.3重新编译Boost:

./bootstrap.sh --with-toolset=gcc-11.3
./b2 install

确保编译Boost时使用的gcc版本和编译项目的版本一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 19:27:23