gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 16:14:26 24 4
gpt4 key购买 nike

我已经在终端上使用 gcc 命令来编译 C 程序,但突然间,在更新到我的 Mac 操作系统(到 macOS 10.14 Mojave 和 XCode 10.0)后,我开始收到消息:

test.c:8:10: fatal error: stdio.h: No such file or directory
#include <stdio.h>
^~~~~~~~~
compilation terminated.

我已经安装了 gcc,因为我可以在 /usr/local/bin 中找到它那里确实有一个gcc。我尝试在我的其他 iMac 上运行相同的文件,它没有任何问题。

我试过运行 xcode-select --install它已经安装了,因此它没有解决我现在遇到的问题。我猜路径乱了,因为它似乎找不到 gcc在我开始从其他资源复制和粘贴一些命令来解决这个问题之后。

想在这方面提供一些帮助。

最佳答案

TL; 博士

确保您已下载最新的“命令行工具”包并从终端(命令行)运行它:

open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

有关 Catalina 的一些信息,请参阅 Can't compile a C program on a Mac after upgrading to Catalina 10.15 .

从相当广泛的评论中提取半连贯的答案......

序言

很多时候, xcode-select --install一直是正确的解决方案,但这次似乎没有帮助。您是否尝试过运行主 Xcode GUI 界面?它可能会为您安装一些额外的软件并进行清理。我在安装 Xcode 10.0 后这样做了,但一周或更长时间之前,在升级到 Mojave 之前很久。

我观察到,如果您的 GCC 安装在 /usr/local/bin ,您可能没有使用 Xcode 中的 GCC;通常安装在 /usr/bin .

我也更新到 macOS 10.14 Mojave 和 Xcode 10.0。然而,这两个系统 /usr/bin/gcc和系统 /usr/bin/clang正在为我工​​作( Apple LLVM version 10.0.0 (clang-1000.11.45.2) Target: x86_64-apple-darwin18.0.0 两者都适用。)我的自制 GCC 8.2.0 有问题,在 /usr/include 中找不到标题,这与 /usr/local/bin/gcc 的问题相似也没有找到标题。

我做了一点对比,我的 Mojave 机器没有 /usr/include根本没有 /usr/bin/clang能够编译OK。标题( _stdio.h ,带前导下划线)在我的旧 /usr/include 中;它现在不见了(因此我对 GCC 8.2.0 有问题)。我跑了 xcode-select --install它说“ xcode-select: note: install requested for command line developer tools”,然后运行一个 GUI 安装程序,它向我展示了我同意的许可证,然后它下载并安装了命令行工具——或者它声称的那样。

然后我运行 Xcode GUI(命令空间,Xcode,返回),它说需要安装更多软件,但仍然没有 /usr/include .但是我可以用 /usr/bin/clang 编译和 /usr/bin/gcc — 和 -v选项表明他们正在使用
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

工作解决方案

然后 Maxxx noted :

I've found a way. If we are using Xcode 10, you will notice that if you navigate to the /usr in the Finder, you will not see a folder called 'include' any more, which is why the terminal complains of the absence of the header files which is contained inside the 'include' folder. In the Xcode 10.0 Release Notes, it says there is a package:

/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg 

and you should install that package to have the /usr/include folder installed. Then you should be good to go.



当所有其他方法都失败时,请阅读手册,或者在这种情况下阅读发行说明。发现 Apple 想要背弃他们的 Unix 传统,我并不感到非常惊讶,但我很失望。如果他们小心的话,他们可以把我赶走。谢谢你的信息。

在命令行使用以下命令安装软件包后,我有 /usr/include再次,我的 GCC 8.2.0 再次运行。
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

下载命令行工具

Vesal在宝贵的 comment 中指出,您需要在 Mojave 10.14 上下载适用于 Xcode 10.1 的命令行工具包,您可以从:
  • https://developer.apple.com/download/more/

  • 您需要使用 Apple ID 登录才能获得下载。完成下载后,安装命令行工具包。然后按照“工作解决方案”部分中的说明安装 header 。

    这在 Mojave 10.14.1 上对我有用。我以前一定下载过这个,但在我回答这个问题时我已经忘记了。

    升级到 Mojave 10.14.4 和 Xcode 10.2

    在 2019-05-17 左右,我更新到 Mojave 10.14.4,Xcode 10.2 命令行工具也升级了(或者 Xcode 10.1 命令行工具升级到 10.2)。 open上面显示的命令修复了丢失的标题。将主 Xcode 升级到 10.2,然后重新安装命令行工具和 headers 包,可能仍然会有一些冒险。

    升级到 Xcode 10.3(适用于 Mojave 10.14.6)

    2019 年 7 月 22 日,我通过 App Store 收到通知,可以升级到 Xcode 10.3,它包括适用于 iOS 12.4、tvOS 12.4、watchOS 5.3 和 macOS Mojave 10.14.6 的 SDK。我在我的 10.14.5 机器中安装了它,然后运行它,并按照它的建议安装了额外的组件,它似乎已经离开 /usr/include完好无损。

    当天晚些时候,我发现 macOS Mojave 10.14.6 也可用(系统偏好设置⟶软件更新),以及命令行实用程序包 IIRC(它已自动下载并安装)。安装 o/s 更新再次消除了 /usr/include ,但 open答案顶部的命令再次恢复了它。我在文件上的日期 open命令是 2019-07-15。

    升级到 XCode 11.0(适用于 Catalina 10.15)

    XCode 11.0 的升级(“包括适用于 iOS 13、tvOS 13、watchOS 6 和 macOS Catalina 10.15 的 Swift 5.1 和 SDK”)于 2019 年 9 月 21 日发布。我收到了“可用更新”的通知,并通过 App Store 应用程序(更新选项卡)将其下载并安装到运行 macOS Mojave 10.14.6 的机器上,没有问题,而且无需使用 /usr/include .安装后立即(在运行应用程序之前),我尝试重新编译并被告知:

    Agreeing to the Xcode/iOS license requires admin privileges, please run “sudo xcodebuild -license” and then retry this command.



    运行它( sudo xcodebuild -license )允许我运行编译器。从那时起,我运行该应用程序来安装它需要的额外组件;还是没问题。当我升级到 Catalina 本身时会发生什么还有待观察 - 但我的 macOS Mojave 10.14.6 机器目前都可以(2019-09-24)。

    关于升级到 Mojave 后无法在 Mac 上编译 C 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52509602/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com