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

WSL2 Ubuntu下CMake编译报错:无法找到__config_site文件

解决WSL2 Ubuntu中g++编译找不到__config_site的问题

问题根源

你的编译错误是因为头文件路径优先级冲突:系统默认会优先搜索/usr/local/include目录,但这个目录下存在不完整的标准库头文件(比如__config依赖的__config_site未生成,只有模板文件__config_site.in),导致g++ 11.3调用系统标准库时,错误加载了/usr/local/include下的损坏头文件,而非/usr/include/c++/11下的正常系统头文件。

解决方案

1. 临时修复(仅针对当前项目)

修改项目的CMakeLists.txt,强制编译器优先使用系统标准库的头文件路径:

project(Test)
set(CMAKE_CXX_STANDARD 20)

# 添加这两行,指定系统gcc标准库的优先搜索路径
include_directories(BEFORE /usr/include/c++/11)
include_directories(BEFORE /usr/include/x86_64-linux-gnu/c++/11)

add_executable(Test main.cpp)

重新执行cmake .. && make即可编译通过。

2. 永久修复(清理冲突文件)

如果不需要/usr/local/include下的自定义头文件,直接清理该目录下的冲突文件:

# 删除/usr/local下的冲突标准库文件
sudo rm -rf /usr/local/include/__config* /usr/local/include/stdlib.h

如果之前手动编译安装过gcc,还需要检查/usr/local/bin和/usr/local/lib下的gcc相关文件,比如删除/usr/local/bin/g++、/usr/local/bin/gcc,确保系统默认的/usr/bin/g++(11.3版本)被优先调用。

3. 验证修复

用g++直接编译测试文件验证:

g++ -std=c++20 main.cpp -o test
./test

无报错则说明问题已解决。

内容的提问来源于stack exchange,提问作者Andrzej Sołtysik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 15:55:15