TL; DR
Stellen Sie sicher, dass Sie das neueste 'Command Line Tools'-Paket heruntergeladen haben, und führen Sie dieses von einem Terminal (Befehlszeile) aus:
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
Einige Informationen zu Catalina finden Sie unter Kann ein C-Programm auf einem Mac nach dem Upgrade auf Catalina 10.15 nicht kompilieren .
Eine halbkohärente Antwort aus ziemlich ausführlichen Kommentaren extrahieren…
Präambel
Sehr oft, xcode-select --install
es die richtige Lösung, aber diesmal scheint es nicht zu helfen. Haben Sie versucht, die Hauptoberfläche der Xcode-Benutzeroberfläche auszuführen? Möglicherweise wird zusätzliche Software für Sie installiert und bereinigt. Ich habe das nach der Installation von Xcode 10.0 gemacht, aber vor einer Woche oder länger, lange bevor ich auf Mojave aktualisiert habe.
Ich stelle fest, dass /usr/local/bin
Sie den GCC von Xcode wahrscheinlich nicht verwenden , wenn Ihr GCC installiert ist . das ist normalerweise in installiert/usr/bin
.
Ich habe auch auf macOS 10.14 Mojave und Xcode 10.0 aktualisiert. Sowohl das System /usr/bin/gcc
als auch das System /usr/bin/clang
funktionieren jedoch für mich ( Apple LLVM version 10.0.0 (clang-1000.11.45.2) Target: x86_64-apple-darwin18.0.0
für beide). Ich habe ein Problem damit, dass mein selbstgebautes GCC 8.2.0 keine Header findet /usr/include
, was parallel zu Ihrem Problem ist, dass auch /usr/local/bin/gcc
keine Header gefunden werden.
Ich habe ein bisschen Vergleiche angestellt, und meine Mojave-Maschine hat überhaupt keine /usr/include
, kann aber noch /usr/bin/clang
gut kompilieren. Ein Header ( _stdio.h
mit führendem Unterstrich) war in meinem alten /usr/include
; es fehlt jetzt (daher mein Problem mit GCC 8.2.0). Ich lief xcode-select --install
und es sagte " xcode-select: note: install requested for command line developer tools
" und dann lief ein GUI-Installationsprogramm, das mir eine Lizenz zeigte, der ich zugestimmt hatte, und es lud die Befehlszeilentools herunter und installierte sie - oder so behauptete es.
Ich habe dann die Xcode-GUI (Command-Space, Xcode, Return) ausgeführt und festgestellt, dass weitere Software installiert werden muss, aber immer noch nicht /usr/include
. Aber ich kann mit /usr/bin/clang
und kompilieren /usr/bin/gcc
- und die -v
Option schlägt vor, dass sie verwenden
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
Arbeitslösung
Dann bemerkte Maxxx :
Ich habe einen Weg gefunden. Wenn wir Xcode 10 verwenden, werden Sie feststellen, dass beim Navigieren /usr
im Finder kein Ordner mit dem Namen "include" mehr angezeigt wird. Aus diesem Grund beschwert sich das Terminal über das Fehlen der darin enthaltenen Header-Dateien den Ordner 'include'. In den Versionshinweisen zu Xcode 10.0 heißt es, dass es ein Paket gibt:
/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
und Sie sollten dieses Paket installieren, damit der /usr/include
Ordner installiert wird. Dann solltest du gut gehen.
Wenn alles andere fehlschlägt, lesen Sie das Handbuch oder in diesem Fall die Versionshinweise. Ich bin nicht schrecklich überrascht, dass Apple seinem Unix-Erbe den Rücken kehren möchte, aber ich bin enttäuscht. Wenn sie vorsichtig sind, könnten sie mich vertreiben. Danke für die Information.
Nachdem ich das Paket mit dem folgenden Befehl in der Befehlszeile installiert habe, habe ich es /usr/include
erneut und mein GCC 8.2.0 funktioniert wieder.
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
Herunterladen von Befehlszeilentools
Wie Vesal in einem wertvollen Kommentar hervorhebt , müssen Sie das Command Line Tools-Paket für Xcode 10.1 auf Mojave 10.14 herunterladen.
Sie müssen sich mit einer Apple ID anmelden, um den Download zu erhalten. Wenn Sie den Download abgeschlossen haben, installieren Sie das Befehlszeilentools-Paket. Installieren Sie dann die Header wie im Abschnitt 'Arbeitslösung' beschrieben.
Dies funktionierte für mich in Mojave 10.14.1. Ich muss das schon einmal heruntergeladen haben, aber ich hatte es vergessen, als ich diese Frage beantwortete.
Upgrade auf Mojave 10.14.4 und Xcode 10.2
Am oder um den 17.05.2019 habe ich auf Mojave 10.14.4 aktualisiert, und die Xcode 10.2-Befehlszeilentools wurden ebenfalls aktualisiert (oder die Xcode 10.1-Befehlszeilentools wurden auf 10.2 aktualisiert). Dasopen
oben gezeigte Befehl hat die fehlenden Header behoben. Es kann noch Abenteuer geben, wenn der Haupt-Xcode auf 10.2 aktualisiert und anschließend die Befehlszeilentools und das Header-Paket neu installiert werden.
Upgrade auf Xcode 10.3 (für Mojave 10.14.6)
Am 22.07.2019 wurde ich über den App Store darüber informiert, dass das Upgrade auf Xcode 10.3 verfügbar ist und SDKs für iOS 12.4, tvOS 12.4, watchOS 5.3 und macOS Mojave 10.14.6 enthält. Ich habe es auf einem meiner 10.14.5-Computer installiert, ausgeführt und zusätzliche Komponenten installiert, wie vorgeschlagen, und es scheint verlassen zu haben/usr/include
intakt geblieben zu sein.
Später am selben Tag stellte ich fest, dass auch macOS Mojave 10.14.6 verfügbar war (Systemeinstellungen ⟶ Software-Update), zusammen mit einem Befehlszeilen-Dienstprogrammpaket IIRC (es wurde automatisch heruntergeladen und installiert). Die Installation des O / S-Updates wurde erneut gelöscht /usr/include
, aber der open
Befehl oben in der Antwort stellte es erneut wieder her. Das Datum, das ich in der Datei für den open
Befehl hatte, war 2019-07-15.
Upgrade auf XCode 11.0 (für Catalina 10.15)
Das Upgrade auf XCode 11.0 ("enthält Swift 5.1 und SDKs für iOS 13, tvOS 13, watchOS 6 und macOS Catalina 10.15") wurde am 21.09.2019 veröffentlicht. Ich wurde über "verfügbare Updates" informiert und über die App Store-App (Registerkarte "Updates") ohne Probleme und ohne Probleme damit auf Computern heruntergeladen und installiert, auf denen macOS Mojave 10.14.6 ausgeführt wird /usr/include
. Unmittelbar nach der Installation (bevor ich die Anwendung selbst ausgeführt habe) habe ich eine Neukompilierung versucht und wurde informiert:
Um der Xcode / iOS-Lizenz zuzustimmen, sind Administratorrechte erforderlich. Führen Sie "sudo xcodebuild -license" aus und wiederholen Sie diesen Befehl.
Durch Ausführen von that ( sudo xcodebuild -license
) konnte ich den Compiler ausführen. Seitdem habe ich die Anwendung ausgeführt, um zusätzliche Komponenten zu installieren, die sie benötigt. immer noch kein Problem. Es bleibt abzuwarten, was passiert, wenn ich auf Catalina selbst aktualisiere - aber meine macOS Mojave 10.14.6-Maschinen sind im Moment (24.09.2019) in Ordnung.
echo "#include <a.h>" | gcc -v -x c -