c - 升级到 Catalina 10.15 后无法在 Mac 上编译 C 程序
问题描述
之前有一个问题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/
我们只需要为这个文件夹中的所有头文件创建符号链接:
/usr/local/include/
它对我有用!以下命令行将处理所有问题:
sudo ln -s /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/* /usr/local/include/
你会得到一些警告。一些标头已经存在,如下所示:
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
完全可以忽略。就这样。
推荐阅读
- javascript - 如何更新主表当前行的输入类型文本中的值从模态窗口表中获取值
- javascript - Formik:为什么在 onSubmit 中设置时间输出?
- deep-learning - 如果我的回归模型陷入高价值损失,我该怎么办?
- xamarin.forms - Xamarin 表单手势拖拽闪烁
- laravel - Laravel 在 cpanel 登录问题中恢复
- c# - Azure Web 应用程序上的 ASP.NET Core,添加 Azure Web 应用程序诊断会在启动时引发 FileNotFoundException
- c# - 如何将控件转发到自定义控件中的堆栈面板?
- android - 如何检查发生的另一个事件而不是预期的返回码?
- python - 在 tensorlfow 对象检测 api 中导出推理图时出错
- python - 你能在多个 url 上训练 Scrapely Scraper 吗?