clang工具链搭建踩坑
目标环境
- VSCode + LunarVim
- clang for compile
- Clangd for intelligent coding
- clang-format for document format
- LLDB for debug
踩坑
- 在编译命令后加 -v 可以看到具体的报错信息
- libstdc++是gcc使用的C++标准库, 其中包括容器,io,算法,迭代器等, 而libc++是LLVM团队实现的, 需要单独安装(不会在安装clang时同时安装)
- clang编译时, 如果不加入-stdlib=libc++, 则默认使用libstdc++, 即使用g++的标准实现
- libc++是对c++标准库的实现,而libc++abi(application binary interface)提供内存管理,异常处理等底层支持。libc++依赖libc++abi或pathscale的libcxxrt或gcc的libsupcxx三者之一进行构建。
clang++无法找到头文件iostream
通过apt install clang++之后, 进行编译测试
clang main.cpp -o main报错: Clang++: fatal error: ‘iostream’ file not found
Locating iostream in Clang++: fatal error: ‘iostream’ file not found
根本原因: clang++在编译过程中, 需要使用g++中的头文件, 而具体使用的版本是通过gcc —version来确定的, 那么导致上诉错误的原因有两种:
- 本地未安装gcc或g++
- gcc 版本与g++版本不一致: gcc版本高于g++导致无法找到gcc对应版本的g++头文件
解决方法: 安装相同版本的gcc和g++, 保证gcc —version和g++ —version结果相同
- 通过apt install新版gcc和g++, 到/usr/bin/中重新构建gcc和g++的软链接
clang编译过程中加入-stdlib=libc++报错
当使用-stdlib=libstdc++时编译正常, 但是=libc++时, 因为找不到头文件而编译失败了
- sudo apt install libc++-14-dev
- sudo apt install libc++abi-14-dev
- 14为clang版本号
VSCode中完成配置
下载所需插件:
编写tasks.json 和 launch.json
1 | { |
1 | { |
下次还是不要想当然直接apt下载了, 老老实实搜一搜了解一下, 会避免很多坑! 不过说到底还是自己对C++的编译过程太不了解…
- Title: clang工具链搭建踩坑
- Author: Huan Lee
- Created at : 2023-04-08 10:00:00
- Updated at : 2024-02-26 04:53:15
- Link: https://www.mirthfullee.com/2023/04/08/clang工具链搭建踩坑/
- License: This work is licensed under CC BY-NC-SA 4.0.