还有一个问题Can't compile C program on a Mac after upgrade to Mojave , 以及问题的答案涵盖了错误的大部分变体。
现在——从 2019 年 10 月 7 日星期一开始——你可以升级到 macOS Catalina 10.15。再一次,在升级过程中,/usr/include
目录已被更新破坏,即使在升级(从 Mojave 10.14.6)到 Catalina 之前安装了 XCode 11.0。因此,构建为期望有一个 /usr/include
目录的编译器不再工作。
Mojave 问题的主要推荐步骤——使用命令:
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
无法正常工作,因为目录 /Library/Developer/CommandLineTools/Packages/
不存在(因此还没有要打开的 .pkg
文件).
是否有一种好的(官方)方法来创建和填充目录 /usr/include
?
最佳答案
在继续之前,请确保安装 xcode 命令行工具。
xcode-select --install
其实,你可以做到!实际上所有的 C 头文件都可以在这个文件夹中找到:
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/
我们只需要为这个文件夹中的所有头文件创建符号链接(symbolic link):
/usr/local/include/
它对我有用!以下命令行将解决所有问题:
sudo ln -s /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/* /usr/local/include/
你会得到一些警告。一些 header 已经存在,例如:
ln: /usr/local/include//tcl.h: File exists
ln: /usr/local/include//tclDecls.h: File exists
ln: /usr/local/include//tclPlatDecls.h: File exists
ln: /usr/local/include//tclTomMath.h: File exists
ln: /usr/local/include//tclTomMathDecls.h: File exists
ln: /usr/local/include//tk.h: File exists
ln: /usr/local/include//tkDecls.h: File exists
ln: /usr/local/include//tkPlatDecls.h: File exists
完全可以忽略。就这样。
关于升级到 Catalina 10.15 后无法在 Mac 上编译 C 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58278260/