Mac下使用Clang++编译C++提示找不到libstdc++
找不到libstdc++
当C++代码使用了stdlib.h
等头文件时,使用Clang++
编译可能会报找不到头文件的错误。
这是因为OSX10.9以上将默认c++库
设置为了libc++
。
可通过Clang的参数配置,在.zshrc
等文件中,加入配置即可。
1 | $ vim ~/.zshrc |
加入如下设置:
1 | export CLANG_DEFAULT_CXX_STDLIB="libstdc++" |
使配置在当前终端生效:
1 | source ~/.zshrc |
Clang参数配置
配置 | 描叙 |
---|---|
CMAKE_C_COMPILER | gcc 路径 |
CMAKE_CXX_COMPILER | g++ 路径 |
CMAKE_INSTALL_PREFIX | 指定install路径 |
CMAKE_BUILD_TYPE | build 类型(Debug, Release, RelWithDebInfo, and MinSizeRel. Default is Debug.) |
LLVM_TARGETS_TO_BUILD | build 目标平台 (AArch64, AMDGPU, ARM, BPF, Hexagon, Mips, MSP430, NVPTX, PowerPC, Sparc, SystemZ, X86, XCore.) |
LLVM_OPTIMIZED_TABLEGEN | Builds a release tablegen that gets used during the LLVM build. This can dramatically speed up debug builds. |
LLVM_BUILD_LLVM_DYLIB | Generate libLLVM.so. This library contains a default set of LLVM components that can be overridden with LLVM_DYLIB_COMPONENTS. The default contains most of LLVM and is defined in tools/llvm-shlib/CMakelists.txt. |
CMAKE_CXX_FLAGS | c++ 编译参数 |
CMAKE_EXE_LINKER_FLAGS | linker 参数 |
CLANG_DEFAULT_CXX_STDLIB | 指定clang 默认使用的C++ stdlib ("libstdc++" or "libc++" or 空使用当前默认配置) |
CLANG_DEFAULT_LINKER | 指定clang 默认使用的 linker (linker name or absolute path.) |
CLANG_DEFAULT_RTLIB | 指定clang 默认使用的 runtime 库("libgcc" or "compiler-rt" or 空使用当前默认配置) |
LLVM_ENABLE_LIBCXX | 启用libc++编译llvm & clang |
LLVM_ENABLE_LLD | 启用 lld 作为 C and C++ linker |
参考这篇博客的设置。
- 本文链接:http://katherineleeyq.cn/2019/03/23/Mac下使用Clang-编译C-提示找不到libstdc/
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!