mac 下 clang++ 找不到头文件 stdlib.h
因?yàn)橐?openmp庫(kù),用 clang++ 編譯 c++程序,出現(xiàn)了如下報(bào)錯(cuò):
clang++ xx.cpp -o xx -fopenmp
/usr/local/Cellar/llvm/7.0.0/include/c++/v1/stdlib.h:94:15:
fatal error: 'stdlib.h' file not found
#include_next <stdlib.h>
^
探究原因:
include_next是在當(dāng)前文件所在的路徑后面的路徑(一般有多個(gè)搜索路徑)里搜索頭文件。
報(bào)錯(cuò)說(shuō)明 clang++的 include 搜索路徑里/usr/local/Cellar/llvm/7.0.0/include/c++/v1/ 后面的路徑中不存在stdlib.h文件。
網(wǎng)上的解決方案
xcode-select install
沒(méi)有用。
使用命令查看 clang++的 include 搜索路徑(#include <...> search starts here: 后面)。
clang++ -E -x c++ - -v < /dev/null
可以看到這些
/usr/local/Cellar/llvm/7.0.0/include/c++/v1
/usr/include/c++/v1
/usr/local/include
/usr/local/Cellar/llvm/7.0.0/lib/clang/7.0.0/include
/System/Library/Frameworks (framework directory)
/Library/Frameworks (framework directory)
發(fā)現(xiàn)忽略了不存在的 /usr/include。
因?yàn)楫?dāng)前的 clang++是用 brew 安裝的 llvm 自帶的。
嘗試了卸載 llvm
brew remove llvm
這時(shí)系統(tǒng)里還有 clang++,看起來(lái)是 Xcode 的工具鏈里的。
這時(shí)再執(zhí)行clang++ -E -x c++ - -v < /dev/null可以看到
/usr/local/include
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/10.0.0/include
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks (framework directory)
因?yàn)橐?openmp,所以還得用 brew 安裝的 llvm。就又安裝回來(lái)了
brew install llvm
然后通過(guò)添加軟鏈接的方式解決問(wèn)題。
ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include /usr/include/c++/v1
因?yàn)?code>MacOSX10.14.sdk實(shí)際上是指向MacOSX.sdk的軟鏈接,所以直接用MacOSX.sdk即可。
總結(jié)
以上是生活随笔為你收集整理的mac 下 clang++ 找不到头文件 stdlib.h的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: servlet中请求转发(forword
- 下一篇: 混合模式 | blend-mode (C