Kann nicht kompilieren C-Programm auf einem Mac nach dem upgrade zu Mojave
Habe ich die gcc-Befehl auf dem terminal zu kompilieren von C-Programmen, aber plötzlich, nach einem update für mein Mac OS (auf macOS 10.14 Mojave, und XCode 10.0), begann ich erhalte die Nachricht:
test.c:8:10: fatal error: stdio.h: No such file or directory
#include <stdio.h>
^~~~~~~~~
compilation terminated.
Ich habe schon gcc installiert, wie ich es finden kann in /usr/local/bin
und es ist wirklich ein gcc drin. Ich habe versucht mit der gleichen Datei auf meinen anderen iMac und es funktionierte ohne jedes Problem.
Ich habe versucht mit xcode-select --install
und es bereits installiert wurde, damit es nicht das Problem zu beheben bin ich jetzt. Ich vermute, dass der Pfad zu versaut ist, wie es scheint nicht wie die es finden kann gcc
nach begann ich das kopieren und einfügen einiger Befehle von anderen Ressourcen, um dieses Problem zu lösen.
Möchte einige Hilfe auf diesem.
- Sie können die Suchpfade von gcc mit
echo "#include <a.h>" | gcc -v -x c -
- Sehr oft
xocde-select --install
ist die richtige Lösung. Die o/s aktualisieren Sie auf? Mojave-10.14? Die XCode hast du installiert? 10.0 oder eine andere version? - Mojave 10.14, ich habe installiert die neueste xcode aus dem app-store-version 10.0
- OK; ich auch. Aber sowohl die system
/usr/bin/gcc
- und system -/usr/bin/clang
sind, für mich zu arbeiten. (Ich glaube, ich habe ein problem mit meinem home-GCC gebaut 8.2.0, aber das ist tangential zu Ihrem problem.) (Version:Apple LLVM version 10.0.0 (clang-1000.11.45.2) Target: x86_64-apple-darwin18.0.0
für beide.) Aber die Vorherige installation der command line tools und Header scheint OK zu sein. Hmmm...ich werde haben, zu denken. Ich habe gerade die Aktivierung der Mojave - (es war nicht fertig, als ich zuerst kommentiert; es ist jetzt, zwei verschiedene Macs, eine verbesserte, einer nicht). - Haben Sie versucht mit den wichtigsten XCode GUI-Schnittstelle? Sie können installieren, ein paar Sachen für Sie und Aufräumen? Ich wusste, dass nach der Installation von XCode 10.0, aber eine Woche oder mehr vor, lange bevor Sie das Upgrade auf Mojave.
- OK; ich habe getan, ein bisschen der Vergleich, und mein Mojave-Maschine hat keine
/usr/include
an alle, die noch/usr/bin/clang
ist in der Lage zu kompilieren, OK. Ein header (_stdio.h
mit führenden Unterstrich) war in meiner alten/usr/include
; es fehlt jetzt (daher mein problem mit GCC 8.2.0). Ich liefxcode-select --install
und es sagte: "xcode-select: Hinweis: installieren Sie beantragt für die command line developer tools" und dann lief GUI-Zeug, um Nutzungsvertrag und es heruntergeladen und installiert Sie — so wird es behauptet. Ich lief dann XCode-GUI (wieder — Befehl-Raum, xcode, return) und er sagte, es benötigt noch einiges mehr... - ...und immer noch keine
/usr/include
. Grrrr! Aber ich kann kompilieren mit/usr/bin/clang
und/usr/bin/gcc
— und die-v
option schlägt vor, Sie sind mitInstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
. Ich weiß nicht, was hier Los ist, sorry für die Flut von "wie es passiert" - Kommentar, was nicht immer auf eine Antwort. - Die Zeit vergeht — ich hatte bisher nur die automatische updater informieren Sie mich, dass es eine neue XCode-version verfügbar und soll es installieren. Ich sagte "ja". Vielleicht ist es dieses problem behebt.
- Ich habe einen Weg gefunden. Wenn wir über XCode 10, Sie werden feststellen, dass, wenn Sie navigieren Sie zu "/usr in den Finder, und Sie werden nicht sehen, einen Ordner namens "include" mehr und das ist, warum Sie das terminal beklagt sich die Abwesenheit des header-Dateien, die sich innerhalb der 'include' Ordner. In diesem release-Anweisung, developer.apple.com/documentation/xcode_release_notes/... (navigieren Sie zu /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg und führen Sie das Paket, um die "include" - Ordner installiert). Dann sollten Sie gut zu gehen.
- Wenn alle Stricke reißen, Lesen Sie die Bedienungsanleitung! Oder in den release notes. Ich bin nicht schrecklich überrascht, als Apple zu wollen, drehen Sie Ihren Rücken auf dem Unix-Erbe. Ich bin enttäuscht. Wenn Sie vorsichtig sind, Sie fahren konnte mich Weg. Vielen Dank für die Informationen; ich werde Experimentieren mit es später (nach dem fangen ein paar Stunden shut-eye).
- Nachdem das Paket installiert wurde (
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
auf der Kommandozeile), ich habe/usr/include
wieder, und mein GCC 8.2.0 Werke einmal mehr. Vielen Dank für den Zeiger; gut gemacht auf der Suche nach es. Ich schlage vor, Sie schreiben die Antwort, da es wahrscheinlich andere Leute, die laufen in das problem.
Du musst angemeldet sein, um einen Kommentar abzugeben.
TL;DR
Stellen Sie sicher, dass Sie heruntergeladen haben, die neuesten "Command Line Tools" - Paket und führen Sie diese aus einem terminal (Kommandozeile):
Extrahieren von semi-kohärente Antwort aus ziemlich umfangreiche Kommentare...
Präambel
Sehr oft
xcode-select --install
wurde die richtige Lösung, aber es scheint nicht zu helfen, diese Zeit. Haben Sie versucht mit den wichtigsten Xcode GUI-Schnittstelle? Sie installieren können einige zusätzliche software für Sie und Aufräumen. Ich wusste, dass nach der Installation von Xcode 10.0, aber eine Woche oder mehr vor, lange bevor Sie das Upgrade auf Mojave.Habe ich beobachtet, dass, wenn Sie Ihre GCC installiert ist, in
/usr/local/bin
Sie wahrscheinlich nicht mit der GCC von Xcode; das ist in der Regel installiert in/usr/bin
.Ich zu dem Update auf macOS 10.14 Mojave und Xcode 10.0. Aber sowohl die system
/usr/bin/gcc
- und system -/usr/bin/clang
arbeiten 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 mit meinem home-GCC gebaut 8.2.0 nicht finden-Header in/usr/include
, die parallel zu deinem problem mit/usr/local/bin/gcc
- Header nicht finden, entweder.Ich habe mich ein bisschen der Vergleich, und mein Mojave-Maschine hat keine
/usr/include
an alle, die noch/usr/bin/clang
ist in der Lage zu kompilieren, OK. Ein header (_stdio.h
mit führenden Unterstrich) war in meiner 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 lief dann einen GUI-installer, die zeigte mir eine Lizenz, die ich stimmte zu, und es heruntergeladen und installiert haben die Befehlszeilen-tools — so wird es behauptet.Ich lief dann Xcode-GUI (Befehl-Raum, Xcode, return) und er sagte, es benötigt zur Installation weiterer software, aber noch keine
/usr/include
. Aber ich kann kompilieren mit/usr/bin/clang
und/usr/bin/gcc
— und die-v
option schlägt vor, Sie sind mitFunktionierende Lösung
Dann Maxxx notiert:
Wenn alle Stricke reißen, Lesen Sie die Bedienungsanleitung oder, in diesem Fall die release-notes. Ich bin nicht schrecklich überrascht, als Apple wollte zu den Rücken kehren auf Ihrer Unix-Erbe, aber ich bin enttäuscht. Wenn Sie vorsichtig sind, Sie fahren konnte mich Weg. Vielen Dank für die Informationen.
Dass installiert das Paket mit folgendem Befehl auf der Kommandozeile, ich habe
/usr/include
wieder, und mein GCC 8.2.0 Werke einmal mehr.Herunterladen Befehlszeilen-Tools
Als Vesal Punkte in wertvolle Kommentar, Sie müssen laden Sie die Befehlszeilen-Tools-Paket für Xcode 10.1 auf Mojave 10.14, und Sie können tun, so aus:
Müssen Sie die Anmeldung mit einer Apple-ID, um in der Lage sein, um die herunterzuladen. Wenn Sie damit fertig sind das herunterladen, die Installation der Command Line Tools-Paket. Dann installieren Sie die Header, wie im Abschnitt "Working-Lösung".
Dieser arbeitete für mich auf Mojave 10.14.1. Ich muss heruntergeladen haben, diese vor, aber ich hatte vergessen von der Zeit war ich der Beantwortung dieser Frage.
Upgrade auf Mojave 10.14.4 und XCode 10.2
Habe ich aktualisiert, um Mojave 10.14.4, und die XCode-10.2 Befehlszeilen-tools wurden ebenfalls aktualisiert (oder XCode 10.1 Befehlszeilen-tools wurden aktualisiert, um 10.2). Die
open
oben gezeigten Befehl behoben, die fehlenden Header. Es kann immer noch Abenteuer kommen mit der Modernisierung der wichtigsten XCode auf 10.2 und dann wieder Neuinstallation des Kommandozeilen-tools und das Header-Paket./usr/include
, und das Paket aufgelistet in der Antwort oben nicht in/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
undxcode-select --install
sagt, dass die Befehlszeilen-tools, die 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 michopen /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
mich gerettet. Ich war tief in ein Ratten nest mitllvm
undreadline
versucht zu kompilierencrystal
und dann mit meinemruby
Umfeld nicht funktioniert, und das brachte mich wieder zurück aus den Rand des Aussterbens. Danke.MacOS 10.14.4
undXcode 10.2.1
, es hat nicht geklappt.! Also nahm ich den ersten Ansatz zum herunterladen der CLT-Paket von der Apple Entwickler-Webseite installiert und nach Ihre Führung. Jetzt sagt ` /usr/include/Verfügbarkeit.h:497:18: Fehler: fehlender binärer operator vor token "(" ` das ist glaube ich das Problem, weil der c++17. Können Sie bitte helfen. Können Sie reproduzieren Ergebnisse durch die Installation von cchardet Paket.open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
weil das Verzeichnis/usr/include
fehlte nach der Installation. Wenn ich mich Recht erinnere, auf diese Maschine zu, ich startete das update manuell, wenn etwas vorgeschlagen das update verfügbar war. Auf der anderen Maschine, ich wusste nicht, müssen Sie das update manuell (es war vollständig durch die Zeit, die ich sah), aber auch ich hatte noch/usr/include
Links im Ort.open
Befehl aus — ich habe mich von Ihnen positiv bewertet werden, wenn es erlaubt war (es ist nicht, so wollte ich nicht). Ich habe heruntergeladen die cChardet 2.0.0 Quelle. Es gibt nicht Anweisungen zur installation AFAICS, also ich habe keine Ahnung, wie ich soll, um es zu kompilieren. Es ist nicht autoconfigurable — und ich nicht setup.py oder ähnliche Namen, da ich nicht weiß, was Sie tun, und ich daher traue Ihnen nicht (und ich will nicht Lesen, diese scripts).uchardet
sowiecChardet
und möglicherweise müssen Siepyenv
oder eine andere Python-software um (es gab einigebrew
beteiligt). In dieser Phase, ich habe keine Ahnung, was Los ist. Sie sollten entweder ein Problem in der cChardet oder uchardet Projekte, oder stellen Sie eine Frage hier auf SO mit entsprechenden tags. Ich habe nicht den Kontext, um zu helfen, und es ist nicht klar, dass diese Frage beschäftigt sich mit dem problem, das Sie Gesicht.Availability.h
header in Zeile 497 zu sehen, was Los ist? Ich sehe:497 #if __has_include(<AvailabilityProhibitedInternal.h>)
. Es ist noch nicht verursacht mir Kummer. Ich beachten Sie, dass cChardet 2.1.4 beinhaltet nicht die build-Anweisungen. Ich bin schwer in Versuchung, zu erstellen Sie eine Frage über "Bitte fügen Sie eine Datei INSTALLIEREN (oder gleichwertig), beschreibt die Installation und Voraussetzungen".open /Library/Developer/Command ...
Linie.Nach dem Versuch, jede Antwort, die ich finden konnte hier und online, war ich noch immer Fehler für einige fehlende Header. Wenn Sie versuchen, zu kompilieren pyRFR, war ich immer Fehler über
stdexcept
nicht gefunden, die war anscheinend nicht installiert/usr/include
mit den anderen Header. Allerdings fand ich, wo es war versteckt in Mojave und dies nur Hinzugefügt, um das Ende meiner~/.bash_profile
Datei:export CPATH=/Library/Developer/CommandLineTools/usr/include/c++/v1
Wenn dies erledigt ist, kann ich jetzt kompilieren pyRFR und andere C/C++ - Programme. Nach
echo | gcc -E -Wp,-v -
gcc war auf der Suche in den alten Speicherort für diese Header (ohne die/c++/v1
), aber nicht die neue Lage, so hinzufügen, dass zu den CFLAGS es behoben.Das problem ist, dass Xcode vor allem Xcode 10.x, hat nicht alles installiert, so sicherzustellen, dass die Befehlszeilen-tools installiert sind, geben Sie diese in einem terminal-shell:
außerdem starten Sie XCode und sicherzustellen, dass alle erforderlichen installation installiert ist ( Sie sollten aufgefordert werden, wenn es nicht ist.)
und da XCode 10 nicht installieren, die Mac-OS-SDK, führen Sie den installer auf
da dieses Paket nicht installiert ist, indem XCode 10.
Sicher sein, zu überprüfen Xcode Preferences -> Stellen.
Den Befehlszeilen-Tools, die ich ausgewählt hatte war für die Vorherige version von Xcode (8.2.1 statt 10.1)
Hatte ähnliche Probleme wie der OP
Problem
Versuch, dies zu beheben
Ich installierte die neueste version von XCode, jedoch release notes angegeben, die die Datei bereits erwähnt, in der vorherigen Korrektur von Jonathan hier, nicht mehr vorhanden war.
Details hier
https://developer.apple.com/documentation/xcode_release_notes/xcode_10_release_notes , unter der Neue Features Abschnitt.
Lösung, die für mich gearbeitet...
Mithilfe der Informationen in diesem Kommentar, https://github.com/SOHU-Co/kafka-node/issues/881#issuecomment-396197724
Fand ich, dass
brew doctor
berichtet hatte ich unbenutzt umfasst in meinem/usr/local/
Ordner.So zu beheben, ich habe den Befehl vom Benutzer vorgesehen HowCrazy zu finden , um die unbenutzten enthält und verschieben Sie Sie in einen temporären Ordner.
Wiederholt sich hier...
Nach dem ausführen des Skripts werden in der include-Datei Problem war Weg.
nb: ich bemerkte auf dieses Problem hier zu.
Ich gefunden habe, die große Lösung und Erklärung zu diesem GitHub Kommentar.
Der trick:
Gemacht.
Ich hatte dieses Problem und nichts funktionierte. Ich lief
xcode-select --install
und auch installiert/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
.HINTERGRUND
Da ich Probleme mit App Store auf einem neuen laptop, ich war gezwungen, das download der XCode Beta Installationsprogramm von der Apple-website zum installieren von XCode außerhalb App Store. Also ich hatte nur XCode Beta installiert.
LÖSUNG
Diese, (glaube ich), machte
clang
nicht fündigSDKROOT
Verzeichnis/Applications/Xcode.app/....
, weil es keineBeta
im Pfad, oder vielleicht XCode Beta einfach nicht installieren (weiß ich nicht).Um das Problem zu beheben, ich hatte zu entfernen XCode Beta und lösen die App Store Frage zur Installation der release-version.
tldr;
Wenn Sie XCode Beta, reinigen alles und der Installation der release-version vor dem ausprobieren die Lösungen, die das arbeiten für andere Menschen.
Als Jonathan Leffler Punkte oben, die macOS_SDK_headers.pkg-Datei ist nicht mehr da in Xcode 10.1.
Was für mich gearbeitet war, um
brew upgrade
und die updates von gcc und/oder beliebige andere homebrew-haben hinter den kulissen gelöst werden, die Pfad-Probleme.