找不到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

参考这篇博客的设置。