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

CMake链接报错:DSO missing from command line 问题求助

问题解决方法

错误本质

链接错误是因为Clang 18默认链接库与代码依赖的libstdc++不匹配:升级到Clang 18后,编译器默认可能切换到了libc++,但你的代码(或依赖的D库)基于libstdc编译,导致标准库符号无法被找到。

具体修复步骤

1. 修改CMake配置文件

在你的CMakeLists.txt中添加以下配置,强制指定使用libstdc++:

# 设置C++标准(根据模块需求设为20或更高)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

# 强制使用libstdc++编译与链接
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libstdc++")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libstdc++")

# 给目标可执行文件显式链接libstdc++库
target_link_libraries(BetBot PRIVATE stdc++)

2. 清理缓存并重新构建

旧的CMake缓存可能残留配置冲突,需彻底清理后重新编译:

# 删除旧build目录
rm -rf build/
# 创建新build目录并进入
mkdir build && cd build
# 重新生成Makefile
cmake ..
# 执行编译
make

3. 验证依赖版本(可选)

若问题仍存在,检查libstdc++版本是否满足要求:

# 确认libstdc++包含所需版本符号
strings /lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX_3.4.21
# 查看Clang版本
clang-18 --version

如果GLIBCXX_3.4.21不存在,更新libstdc++:

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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 20:48:20