升级到 Catalina 10.15 后无法在 Mac 上编译 C 程序

标签 c xcode macos gcc macos-catalina

还有一个问题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/

相关文章:

c - Visual C++ 2010 堆损坏

c++ - 链表箭头运算符

c - 按位移动

c++ - 英特尔 C++ 编译器是否有资源编译器?

swift - 为什么 Xcode 不显示测试覆盖率?

python - pip无法在Mac上的Docker容器内安装软件包

swift - 如何反射(reflect)从其他属性到 Interface Builder 中的属性的更改

xcode - 在 Swift Cocoa 中,如何请求一次提升的权限而不需要再次请求?

objective-c - NSView 的角是透明的,但不应该是

c++ - QListView 在 Mac OS 中不显示