C程序头文件
今天发现在命令行用clang编译一个普通的c文件时报错:
fatal error: ‘stdio.h’ file not found
查了一下,普遍的说法是:
安装xcode-select($ xcode-select --install),接着安装 /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14. pkg
这种方法不行,我在CommandLineTools文件夹下没有找到Packages,后来找到了一个很好用的方法:
$ export SDKROOT=$(xcrun --sdk macosx --show-sdk-path)
这个方法最大的好处是不用手动去找库文件位置,把这行命令添加到~/.zshrc,再$ source ~/.zshrc
文件就行,不过我运行$ xcrun --sdk macosx --show-sdk-path
指令得到的SDK路径是
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk
这是在Xcode应用内,不确定没有装Xcode的mac会是什么结果
C++头文件无法找到
后面又遇到了C++头文件iostream等也无法找到的情况,仔细搜了一下,上述C语言的方法已经不适用了。想偷懒不行,只能找一下这些头文件的 位置。
我找到的C++头文件的位置在:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1
然后就是修改环境变量,C++的环境变量修改是:
$ export CPLUS_INCLUDE_PATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1:$CPLUS_INCLUDE_PATH
黑体加粗部分是新增的部分,把这行代码添加到~/.zshrc的最后再$ source ~/.zshrc
加载就可以了。如果是C语言的库也可以修改对应的C_INCLUDE_PATH环境变量。