Ubuntu(WSL)下CMake编译C++23 std模块:libc++安装及编译方法求助
在Ubuntu(WSL)上部署libc并编译C23模块代码
一、安装适配Clang 19的libc++
Ubuntu官方源的libc版本通常无法支持C23的import std语法,需要安装LLVM官方源提供的配套版本:
- 添加LLVM官方源(以Ubuntu 22.04/jammy为例,其他版本替换对应系统代号):
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - sudo add-apt-repository "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-19 main" - 更新源并安装libc++开发包:
sudo apt update sudo apt install libc++-19-dev libc++abi-19-dev
二、简化CMake配置
CMake 3.28+已原生支持Clang+libc的C模块,使用以下CMakeLists.txt即可完成配置:
cmake_minimum_required(VERSION 3.28) project(CppModuleDemo) # 强制启用C++23标准 set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) # 指定Clang编译器与libc++标准库 set(CMAKE_CXX_COMPILER clang++) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") # 开启C++模块支持(官方指定的API标识) set(CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API "2182bf5c-ef0d-489a-91da-49dbc3090d2a") set(CMAKE_CXX_MODULES ON) # 生成可执行文件 add_executable(hello_world main.cpp)
三、编译运行
在项目目录下执行以下命令完成编译与测试:
mkdir build && cd build cmake .. make ./hello_world
注意事项
如果编译时提示找不到std模块,可通过clang++ -stdlib=libc++ -v检查编译器默认链接的标准库,确保libc++被正确选中。
内容的提问来源于stack exchange,提问作者Mathlete-101
相关产品推荐
相关产品推荐

