Ich habe den Befehl gcc auf dem Terminal verwendet, um C-Programme zu kompilieren, aber plötzlich erhielt ich nach einem Update des Betriebssystems meines Mac (auf macOS 10.14 Mojave und XCode 10.0) die folgende Nachricht:
test.c:8:10: fatal error: stdio.h: No such file or directory
#include <stdio.h>
^~~~~~~~~
compilation terminated.
Ich habe bereits gcc installiert, wie ich es finden kann, /usr/local/bin
und da ist wirklich ein gcc drin . Ich habe versucht, dieselbe Datei auf meinem anderen iMac auszuführen, und es hat ohne Probleme funktioniert.
Ich habe versucht zu laufen xcode-select --install
und es wurde bereits installiert, daher wurde das Problem, das ich jetzt habe, nicht behoben. Ich vermute, dass der Pfad durcheinander ist, da er anscheinend nicht gefunden werden kann, gcc
nachdem ich einige Befehle aus anderen Ressourcen kopiert und eingefügt habe, um dieses Problem zu lösen.
Möchte etwas Hilfe dazu.
echo "#include <a.h>" | gcc -v -x c -
xocde-select --install
ist die richtige Lösung. Auf welche Betriebssysteme haben Sie aktualisiert? Mojave 10.14? Welchen XCode hast du installiert? 10.0 oder eine andere Version?open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
über die Befehlszeile) installiert habe , habe ich es/usr/include
erneut und mein GCC 8.2.0 funktioniert wieder. Danke für den Zeiger; gut gemacht, es zu finden. Ich schlage vor, Sie schreiben die Antwort auf, da wahrscheinlich andere Leute auf das Problem stoßen werden.Antworten:
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:
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 liefxcode-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 verwendenArbeitslösung
Dann bemerkte Maxxx :
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.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). Das
open
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 deropen
Befehl oben in der Antwort stellte es erneut wieder her. Das Datum, das ich in der Datei für denopen
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: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.quelle
/usr/include
, und das in der obigen Antwort aufgeführte Paket ist nicht vorhanden/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
undxcode-select --install
besagt, dass die Befehlszeilentools derzeit nicht verfügbar sind.fatal error: bits/ctype_base.h: No such file or directory: #include <bits/ctype_base.h>
beim Kompilieren von GCC 7.4.0 mit libstdc ++ auf Mojave für michNachdem ich alle Antworten ausprobiert hatte, die ich hier und online finden konnte, wurden immer noch Fehler für einige fehlende Header angezeigt. Beim Versuch, pyRFR zu kompilieren, wurde die Fehlermeldung angezeigt, dass es
stdexcept
nicht gefunden wurde, was anscheinend nicht in/usr/include
den anderen Headern installiert war . Ich fand jedoch heraus, wo es sich in Mojave versteckte, und fügte dies am Ende meiner~/.bash_profile
Datei hinzu:export CPATH=/Library/Developer/CommandLineTools/usr/include/c++/v1
Danach kann ich pyRFR und andere C / C ++ - Programme kompilieren. Laut
echo | gcc -E -Wp,-v -
gcc hat gcc am alten Speicherort nach diesen Headern gesucht (ohne den/c++/v1
), aber nicht am neuen Speicherort. Das Hinzufügen zu CFLAGS hat dies behoben.quelle
Wenn du
Mojave 10.14.6
/usr/include
wurde erneut gelöschtThe file /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg does not exist.
undxcode-select --install xcode-select: error: command line tools are already installed, use "Software Update" to install updates
Was mir dann geholfen hat, das erwähnte Paket wiederherzustellen, war das Löschen des gesamten
CommandLineTools
Ordners(sudo) rm -rf /Library/Developer/CommandLineTools
und die Neuinstallationxcode-select --install
.quelle
macOS_SDK_headers_for_macOS_10.14.pkg
verfügbar und der Befehlopen /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
hat das getan, was er tun sollte. Tausend Dank!!export CPATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/include
Das Problem ist, dass Xcode, insbesondere Xcode 10.x, nicht alles installiert hat. Stellen Sie daher sicher, dass die Befehlszeilentools installiert sind. Geben Sie dies in eine Terminal-Shell ein:
Starten Sie auch Xcode und stellen Sie sicher, dass die gesamte erforderliche Installation installiert ist (Sie sollten dazu aufgefordert werden, wenn dies nicht der Fall ist). Da Xcode 10 nicht das vollständige Mac OS SDK installiert, führen Sie das Installationsprogramm unter aus
da dieses Paket nicht von Xcode 10 installiert wird.
quelle
Ich habe in diesem GitHub-Kommentar eine großartige Lösung und Erklärung gefunden . Der Trick:
Hat den Job gemacht.
quelle
HINWEIS: Das Folgende ist wahrscheinlich sehr kontextbezogen und zeitlich begrenzt, bevor der Wechsel / die allgemeine Verfügbarkeit von Macos Catalina 10.15 erfolgt. Neuer Laptop. Ich schreibe diesen 1. Oktober 2019.
Ich glaube, diese besonderen Umstände haben mir Probleme beim Bau verursacht. In den meisten anderen Fällen gelten sie möglicherweise nicht.
Kontext:
macos 10.14.6 Mojave, Xcode 11.0, kurz vor dem Start von macos Catalina 10.15 . Neu gekauftes Macbook Pro.
Fehler bei
pip install psycopg2
, bei dem es sich im Grunde um ein Python-Paket handelt, das aus dem Quellcode kompiliert wird.Ich habe bereits einige der vorgeschlagenen Anpassungen in den hier gegebenen Antworten vorgenommen.
Meine Fehler:
Was ich bisher gemacht habe, ohne etwas zu reparieren:
xcode-select --install
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
Immer noch der gleiche Fehler auf stdio.h.
die an einer Reihe von Orten existiert:
Gehen wir also zu dem ersten Verzeichnis
clang
, über das wir uns beschweren, und schauen wir :Hah, wir haben einen Symlink für MacOSX10.15.sdk , aber keinen für MacOSX10.14.sdk . Hier ist noch einmal mein erster
clang
Fehler:clang: warning: no such sysroot directory: '/Applications/Xcode.app/.../Developer/SDKs/MacOSX10.14.sdk' [-Wmissing-sysroot]
Ich vermute, Apple hat die Waffe in ihrer Xcode-Konfiguration gesprungen und denkt bereits, dass sie auf Catalina sind. Da es sich um einen neuen Mac handelt, ist die alte Konfiguration für 10.14 nicht vorhanden.
DIE REPARATUR:
Lassen Sie uns 10.14 genauso wie 10.15 symlinken:
ln -s MacOSX.sdk/ MacOSX10.14.sdk
Übrigens, wenn ich in dieses SDK-Verzeichnis gehe, finde ich:
ERGEBNIS:
pip install psycopg2
funktioniert.Hinweis: Der eigentliche Befehl pip install hat keinen Verweis auf MacOSX10.14.sdk enthalten , der zu einem späteren Zeitpunkt kam, möglicherweise durch den Python-Installationsmechanismus, der die Betriebssystemversion überprüft .
quelle
pip
du? Ich denke, das könnte das Hauptproblem sein.Überprüfen Sie unbedingt die Xcode-Einstellungen -> Speicherorte.
Die von mir ausgewählten Befehlszeilentools waren für die vorherige Version von Xcode (8.2.1 anstelle von 10.1).
quelle
Hatte ähnliche Probleme wie das OP
Problem
Versuchte Korrektur
Ich habe die neueste Version von XCode installiert. In den Versionshinweisen wurde jedoch darauf hingewiesen, dass die im vorherigen Fix erwähnte Datei von Jonathan hier nicht mehr verfügbar war.
Details hier https://developer.apple.com/documentation/xcode_release_notes/xcode_10_release_notes im Abschnitt Neue Funktionen .
Lösung, die für mich funktioniert hat ...
Verwenden Sie die Details in diesem Kommentar unter https://github.com/SOHU-Co/kafka-node/issues/881#issuecomment-396197724
Ich habe festgestellt, dass
brew doctor
ich nicht verwendete Includes in meinem/usr/local/
Ordner gemeldet habe .Um dies zu beheben, habe ich den vom Benutzer HowCrazy bereitgestellten Befehl verwendet , um die nicht verwendeten Includes zu finden und sie in einen temporären Ordner zu verschieben.
Hier wiederholt ...
Nach dem Ausführen der Skripte war das Problem mit der Include-Datei behoben. nb: Ich habe dieses Problem auch hier kommentiert .
quelle
Ich hatte dieses Problem und nichts hat funktioniert . Ich lief
xcode-select --install
und installierte auch/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
.HINTERGRUND
Da ich Probleme mit dem App Store auf einem neuen Laptop hatte, musste ich das Xcode Beta- Installationsprogramm von der Apple-Website herunterladen, um Xcode außerhalb des App Store zu installieren . Also hatte ich nur Xcode Beta installiert.
LÖSUNG
Dies (glaube ich) hat dazu geführt, dass
clang
dasSDKROOT
Verzeichnis nicht gefunden wurde/Applications/Xcode.app/....
, weil es kein Verzeichnis enthält ,Beta
oder Xcode Beta es einfach nicht installiert (ich weiß es nicht). Um das Problem zu beheben, musste ich Xcode Beta entfernen und das App Store- Problem beheben , um die Release-Version zu installieren.tldr;
Wenn Sie über Xcode Beta verfügen , versuchen Sie, alles zu bereinigen und die Release-Version zu installieren, bevor Sie die Lösungen ausprobieren, die für andere Benutzer funktionieren.
quelle
Ich habe fast alle veröffentlichten Lösungen ausprobiert und nichts hat bei mir funktioniert. Ich verwende Mojave OS (10.14.6) und was schließlich für mich funktioniert hat (nachdem ich Xcode und CLTs und SDK-Header entfernt und neu installiert habe):
mit
Jetzt werden R-Pakete, die auf C-Compilern basieren, erfolgreich installiert
quelle
Wie Jonathan Leffler oben ausgeführt hat, ist die Datei macOS_SDK_headers.pkg in Xcode 10.1 nicht mehr vorhanden.
Was für mich funktionierte, war zu tun
brew upgrade
und die Updates von gcc und / oder was auch immer Homebrew hinter den Kulissen tat, lösten die Pfadprobleme.quelle
Die Abhängigkeit von apue.h fehlte immer noch in meiner,
/usr/local/include
nachdem ich dieses Problem unter Mac OS Catalina gemäß den Anweisungen dieser Antwort behoben hatteIch habe die Abhängigkeit manuell von git heruntergeladen und in platziert
/usr/local/include
quelle
Ich hatte das gleiche Problem mit Golang (Debuggen mit Goland) nach der Migration. Das einzige (lächerliche), was geholfen hat, ist das Umbenennen des folgenden Ordners:
Anscheinend hängt es mit alten Dateien zusammen, die Homebrew installiert hat und jetzt kaputt ist.
quelle
@ JL Peyret ist richtig!
Wenn Sie Macos 10.14.6 Mojave, Xcode 11.0+
dann
cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs
sudo ln -s MacOSX.sdk / MacOSX10.14.sdk
quelle