日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

mac 下 clang++ 找不到头文件 stdlib.h

發布時間:2023/12/13 综合教程 40 生活家
生活随笔 收集整理的這篇文章主要介紹了 mac 下 clang++ 找不到头文件 stdlib.h 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

因為要用 openmp庫,用 clang++ 編譯 c++程序,出現了如下報錯:

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是在當前文件所在的路徑后面的路徑(一般有多個搜索路徑)里搜索頭文件。
報錯說明 clang++的 include 搜索路徑里/usr/local/Cellar/llvm/7.0.0/include/c++/v1/ 后面的路徑中不存在stdlib.h文件。

網上的解決方案

xcode-select install

沒有用。

使用命令查看 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)

發現忽略了不存在的 /usr/include

因為當前的 clang++是用 brew 安裝的 llvm 自帶的。
嘗試了卸載 llvm

brew remove llvm

這時系統里還有 clang++,看起來是 Xcode 的工具鏈里的。
這時再執行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)

因為要用 openmp,所以還得用 brew 安裝的 llvm。就又安裝回來了

brew install llvm

然后通過添加軟鏈接的方式解決問題。

ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include /usr/include/c++/v1

因為MacOSX10.14.sdk實際上是指向MacOSX.sdk的軟鏈接,所以直接用MacOSX.sdk即可。

總結

以上是生活随笔為你收集整理的mac 下 clang++ 找不到头文件 stdlib.h的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。