Errore irreversibile di GCC: stdio.h: nessun file o directory di questo tipo


92

Sto cercando di compilare un programma in C su OS X 10.9 con GCC 4.9 (sperimentale). Per qualche motivo, ricevo il seguente errore in fase di compilazione:

gcc: fatal error: stdio.h: No such file or directory

Ho quindi provato un semplice programma Hello World:

Di nuovo, durante l'esecuzione gcc -o ~/hello ~/hello.c, ho ricevuto lo stesso errore. Sto usando una versione sperimentale di gcc, ma non sembra plausibile che ci sarebbe stata una versione che ha generato errori durante l'importazione stdio. Cosa potrebbe causare questo problema e come può essere risolto?


11
Puoi vedere dove gcc sta cercando i file di intestazione eseguendo echo "#include <bogus.h>" | gcc -v -x c -ed esaminando i percorsi di ricerca.
Christian Ternus

1
Comando molto utile! Non sembra essere stdio.hin nessuno dei percorsi di ricerca di GCC.
Jules

2
Mavericks non ha più una base / usr / include. È necessario collegarlo in posizione dall'SDK XCode OS 10.9.
Yann Ramin

3
A proposito, int mainil primo parametro di è un int e non int * argc.
p0lAris

3
@ user2615799 È allesudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include /usr/include
Yann Ramin

Risposte:


143

Mac OS X

Ho avuto anche questo problema (riscontrato tramite i compilatori Macports). Le versioni precedenti di Xcode ti consentivano di installare gli strumenti della riga di comando tramite xcode / Preferences, ma xcode5 non fornisce un'opzione degli strumenti della riga di comando nella GUI, quindi ho pensato che ora fosse inclusa automaticamente. Prova a eseguire questo comando:

Ubuntu

(come da questa risposta )

Alpine Linux

(come da questo commento )


Se stai usando Xcode 6 beta 5, questo comando potrebbe non riuscire. In tal caso devi farlo sudo xcode-select -s /Applications/Xcode.app. Quando hai finito, torna a usare sudo xcode-select -s /Applications/Xcode6-Beta5.app.
Sjors Provoost

1
Wow.
Funziona

1
La guida alpina è estremamente utile per le immagini Docker basate su alpine distro, funziona come desiderato
VanDavv

qualche suggerimento per gli utenti di Windows? Sto
riscontrando

1
Per gli utenti MacOS che ancora problemi dopo l'installazione di CLTs stackoverflow.com/questions/63342521/...

46

Mac OS Mojave

La risposta accettata non funziona più. Quando si esegue il comando, xcode-select --installviene indicato di utilizzare "Aggiornamento software" per installare gli aggiornamenti.

In questo link c'è il metodo aggiornato:

Apri un terminale e poi:

Questo aprirà una procedura guidata di installazione.

Aggiornamento 12/2019

Dopo l'aggiornamento a Mojave 10.15.1 sembra che l'utilizzo xcode-select --installfunzioni come previsto.


La reinstallazione delle intestazioni funziona anche durante l'aggiornamento a Xcode 10.2.
Bojan Dimovski

Quando apro macOS_SDK_headers_for_macOS_10.14.pkg, ricevo un allarme spaventoso dall'installatore: "Questo pacchetto non è compatibile con questa versione di macOS e potrebbe non riuscire a installarsi". Ho Mojave.
Steve Siegel

@SteveSiegel quale versione di Mac OS stai utilizzando? Ho aggiornato alla 10.15.1 e non ho più dovuto fare questa soluzione alternativa. Ho aggiornato la mia risposta per riflettere questo.
Samshel

"aggiornamento a Mojave 10.15.1" non è corretto. @SteveSiegel Il pkg è deprecato. Dovrebbe essere usato SDKROOT. stackoverflow.com/a/63343829/10063119

23

utenti ubuntu:

sudo apt-get install libc6-dev

specialmente gli sviluppatori Ruby che hanno problemi con l'installazione gem install json -v '1.8.2'sulle loro VM


1
Interessante. Grazie. Questa libreria risolve anche altri problemi. Recentemente, l'ho riscontrato mentre cercavo di eseguire un benchmark per petabyet.com (che utilizza gcc).
dhaupin

14
Su alpine linux avevo bisognoapk add libc-dev
shadi

3

Ho avuto lo stesso problema. Ho installato "XCode: strumenti di sviluppo" dall'app store e mi ha risolto il problema.

Penso che questo collegamento aiuterà: https://itunes.apple.com/us/app/xcode/id497799835?mt=12&ls=1

Ringraziamo Yann Ramin per i suoi consigli. Penso che ci sia una soluzione migliore con i link, ma questo è stato facile e veloce.

In bocca al lupo!


Ti riferisci al normale Xcode? O esiste una versione speciale chiamata "XCode: strumenti di sviluppo"? Perché vedo solo Xcode normale nell'App Store. Certo, sono passati 4 anni da quando questa risposta è stata pubblicata.
user124384

1

So che il mio caso è raro, ma lo aggiungerò comunque qui per qualcuno che lo risolverà in seguito. Avevo una destinazione del modulo del kernel Linux nel mio Makefile e ho provato a compilare il mio programma in spazio utente insieme al modulo del kernel che non ha stdio. Rendendolo un obiettivo separato ha risolto il problema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.