Schwerwiegender GCC-Fehler: stdio.h: Keine solche Datei oder kein solches Verzeichnis
Lesezeit: 5 Minuten
Jules
Ich versuche, ein Programm in C unter OS X 10.9 mit GCC 4.9 (experimentell) zu kompilieren. Aus irgendeinem Grund erhalte ich beim Kompilieren den folgenden Fehler:
gcc: fatal error: stdio.h: No such file or directory
Ich habe dann ein einfaches Hello World-Programm ausprobiert:
Wieder beim Laufen gcc -o ~/hello ~/hello.c, ich habe den gleichen Fehler. Ich verwende eine experimentelle Version von gccaber es scheint unwahrscheinlich, dass es ein Release gibt, das beim Import Fehler erzeugt stdio. Was könnte dieses Problem verursachen und wie kann es behoben werden?
Sie können sehen, wo gcc nach Header-Dateien sucht, indem Sie dies tun echo "#include <bogus.h>" | gcc -v -x c - und Untersuchen der Suchpfade.
– Christian Ternus
25. Oktober 2013 um 3:53 Uhr
Sehr nützlicher Befehl! Es sieht nicht danach aus stdio.h sich in einem der Suchpfade von GCC befindet.
– Jules
25. Oktober 2013 um 3:56 Uhr
Mavericks hat keine Basis mehr /usr/include. Sie müssen es mit dem XCode OS 10.9 SDK verknüpfen.
– Jan Ramin
25. Oktober 2013 um 3:57 Uhr
Übrigens, int mainDer erste Parameter von ist ein int und nicht int *argc.
– p0lAris
25. Oktober 2013 um 3:57 Uhr
@ user2615799 Es ist um sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include /usr/include
– Jan Ramin
25. Oktober 2013 um 15:11 Uhr
Amos
Mac OS
Ich hatte dieses Problem auch (das durch Macports-Compiler aufgetreten ist). In früheren Versionen von Xcode konnten Sie Befehlszeilentools über xcode/Preferences installieren, aber xcode5 bietet keine Option für Befehlszeilentools in der GUI, sodass ich davon ausgegangen bin, dass sie jetzt automatisch enthalten ist. Versuchen Sie, diesen Befehl auszuführen:
xcode-select --install
Wenn Sie eine Fehlermeldung sehen, dass Entwicklertools bereits installiert sind (und immer noch keine Header-Dateien gefunden werden können), löschen Sie alle vorhandenen, um eine Neuinstallation durchzuführen:
sudo rm -rf /Library/Developer/CommandLineTools
Ubuntu
(gemäß dieser Antwort)
sudo apt-get install libc6-dev
Alpines Linux
(laut diesem Kommentar)
apk add libc-dev
Wenn Sie Xcode 6 Beta 5 verwenden, schlägt dieser Befehl möglicherweise fehl. In diesem Fall müssen Sie tun sudo xcode-select -s /Applications/Xcode.app. Wenn Sie fertig sind, wechseln Sie mit zurück sudo xcode-select -s /Applications/Xcode6-Beta5.app.
– Sjors Provoost
7. August 2014 um 16:54 Uhr
Wow. Arbeite 2017 immer noch mit Xcode 8.0 und Sierra.
– Benutzer124384
22. April 2017 um 15:45 Uhr
Alpine Guide ist äußerst nützlich für Docker-Images, die auf Alpine-Distributionen basieren, funktioniert wie gewünscht
– VanDavv
21. August 2018 um 15:31 Uhr
Irgendwelche Vorschläge für Windows-Benutzer? Ich habe dieses Problem unter Windows
– Ratul Hassan
24. Juli 2020 um 5:32 Uhr
Für macOS-Benutzer, die nach der Installation von CLTs immer noch Probleme haben stackoverflow.com/questions/63342521/…
– Benutzer10063119
16. Oktober 2020 um 12:48 Uhr
Samschel
Mac OS Mojave
Die akzeptierte Antwort funktioniert nicht mehr. Beim Ausführen des Befehls xcode-select --install Es sagt Ihnen, dass Sie “Software-Update” verwenden sollen, um Updates zu installieren.
In diesem Verknüpfung ist die aktualisierte Methode:
Öffnen Sie ein Terminal und dann:
cd /Library/Developer/CommandLineTools/Packages/
open macOS_SDK_headers_for_macOS_10.14.pkg
Dies öffnet einen Installationsassistenten.
Aktualisierung 12/2019
Nach dem Update auf Mojave 10.15.1 scheint die Verwendung von xcode-select --install funktioniert wie vorgesehen.
Die Neuinstallation der Header funktioniert auch beim Upgrade auf Xcode 10.2.
– Bojan Dimowski
27. März 2019 um 12:58 Uhr
Wenn ich macOS_SDK_headers_for_macOS_10.14.pkg öffne, erhalte ich eine beängstigende Warnung vom Installationsprogramm: „Dieses Paket ist mit dieser Version von macOS nicht kompatibel und kann möglicherweise nicht installiert werden.“ Ich habe Mojave.
– Steve Siegel
6. Dezember 2019 um 17:34 Uhr
@SteveSiegel welche Mac OS-Version verwendest du? Ich habe auf 10.15.1 aktualisiert und musste diese Problemumgehung nicht mehr durchführen. Meine Antwort wurde aktualisiert, um dies widerzuspiegeln.
– Samschel
7. Dezember 2019 um 19:57 Uhr
“Aktualisierung auf Mojave 10.15.1”, das ist falsch. @SteveSiegel Das Paket ist veraltet. SDKROOT sollte verwendet werden. stackoverflow.com/a/63343829/10063119
– Benutzer10063119
10. August 2020 um 16:37 Uhr
Ubuntu-Benutzer:
sudo apt-get install libc6-dev
besonders Ruby-Entwickler, die Probleme bei der Installation haben gem install json -v '1.8.2' auf ihren VMs
Interessant. Vielen Dank. Diese Bibliothek löst auch einige andere Probleme. Kürzlich bin ich darauf gestoßen, als ich versuchte, einen Benchmark für petabyte.com (das gcc verwendet) auszuführen.
– dhaupin
23. August 2016 um 18:24 Uhr
Auf Alpine Linux brauchte ich apk add libc-dev
– Schadi
28. Januar 2017 um 9:29 Uhr
Ich weiß, dass mein Fall selten ist, aber ich werde ihn trotzdem hier für jemanden hinzufügen, der ihn später behebt. Ich hatte ein Ziel für ein Linux-Kernel-Modul in meinem Makefile und habe versucht, mein User-Space-Programm zusammen mit dem Kernel-Modul zu kompilieren, das kein stdio hat. Es zu einem separaten Ziel zu machen, löste das Problem.
Ich hatte das gleiche Problem. Ich habe “XCode: Development Tools” aus dem App Store installiert und es hat das Problem für mich behoben.
Danke an Yann Ramin für seinen Rat. Ich denke, es gibt eine bessere Lösung mit Links, aber das war einfach und schnell.
Viel Glück!
Beziehen Sie sich auf nur normalen Xcode? Oder gibt es eine spezielle Version namens “XCode: Development Tools”? Weil ich im App Store nur normalen Xcode sehe. Zugegeben, dies liegt 4 Jahre in der Zukunft, seit diese Antwort veröffentlicht wurde.
– Benutzer124384
22. April 2017 um 15:36 Uhr
Beziehen Sie sich auf nur normalen Xcode? Oder gibt es eine spezielle Version namens “XCode: Development Tools”? Weil ich im App Store nur normalen Xcode sehe. Zugegeben, dies liegt 4 Jahre in der Zukunft, seit diese Antwort veröffentlicht wurde.
– Benutzer124384
22. April 2017 um 15:36 Uhr
14222500cookie-checkSchwerwiegender GCC-Fehler: stdio.h: Keine solche Datei oder kein solches Verzeichnisyes
Sie können sehen, wo gcc nach Header-Dateien sucht, indem Sie dies tun
echo "#include <bogus.h>" | gcc -v -x c -
und Untersuchen der Suchpfade.– Christian Ternus
25. Oktober 2013 um 3:53 Uhr
Sehr nützlicher Befehl! Es sieht nicht danach aus
stdio.h
sich in einem der Suchpfade von GCC befindet.– Jules
25. Oktober 2013 um 3:56 Uhr
Mavericks hat keine Basis mehr /usr/include. Sie müssen es mit dem XCode OS 10.9 SDK verknüpfen.
– Jan Ramin
25. Oktober 2013 um 3:57 Uhr
Übrigens,
int main
Der erste Parameter von ist ein int und nicht int *argc.– p0lAris
25. Oktober 2013 um 3:57 Uhr
@ user2615799 Es ist um
sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include /usr/include
– Jan Ramin
25. Oktober 2013 um 15:11 Uhr