Erreur fatale GCC: stdio.h: aucun fichier ou répertoire de ce type

90

J'essaye de compiler un programme en C sur OS X 10.9 avec GCC 4.9 (expérimental). Pour une raison quelconque, j'obtiens l'erreur suivante au moment de la compilation:

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

J'ai ensuite essayé un programme simple Hello World:

#include <stdio.h>

int main(int argc, const char *argv[])
{
    printf("Hello, world!");
    return 0;
}

Encore une fois, en courant gcc -o ~/hello ~/hello.c, j'ai eu la même erreur. J'utilise une version expérimentale de gcc, mais il semble peu plausible qu'une version génère des erreurs lors de l'importation stdio. Qu'est-ce qui pourrait causer ce problème et comment le résoudre?

Jules
la source
11
Vous pouvez voir où gcc recherche les fichiers d'en-tête en effectuant echo "#include <bogus.h>" | gcc -v -x c -et en examinant les chemins de recherche.
Christian Ternus
1
Commande très utile! Cela ne ressemble stdio.hà aucun des chemins de recherche de GCC.
Jules
2
Mavericks n'a plus de base / usr / include. Vous devez le lier en place à partir du SDK XCode OS 10.9.
Yann Ramin
3
BTW, int mainle premier paramètre de est un int et non un int * argc.
p0lAris
3
@ user2615799 C'est àsudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include /usr/include
Yann Ramin

Réponses:

141

Mac OS X

J'ai eu ce problème aussi (rencontré via les compilateurs Macports). Les versions précédentes de Xcode vous permettaient d'installer des outils de ligne de commande via xcode / Preferences, mais xcode5 ne donne pas d'option d'outils de ligne de commande dans l'interface graphique, donc j'ai supposé qu'il était automatiquement inclus maintenant. Essayez d'exécuter cette commande:

xcode-select --install

Ubuntu

(selon cette réponse )

sudo apt-get install libc6-dev

Alpine Linux

(selon ce commentaire )

apk add libc-dev
amos
la source
Si vous utilisez Xcode 6 beta 5, cette commande peut échouer. Dans ce cas, vous devez le faire sudo xcode-select -s /Applications/Xcode.app. Lorsque vous avez terminé, revenez en utilisant sudo xcode-select -s /Applications/Xcode6-Beta5.app.
Sjors Provoost
1
Sensationnel. Je travaille toujours avec Xcode 8.0 et Sierra en 2017.
user124384
1
Le guide alpin est extrêmement utile pour les images Docker basées sur la distribution alpine, fonctionne comme
prévu
une suggestion pour les utilisateurs de Windows? J'ai ce problème sur Windows
Ratul Hasan
1
Pour les utilisateurs de Mac OS qui avez encore des problèmes après l' installation CLTs de
Anki
46

Mac OS Mojave

La réponse acceptée ne fonctionne plus. Lors de l'exécution de la commande, xcode-select --installil vous indique d'utiliser "Mise à jour logicielle" pour installer les mises à jour.

Dans ce lien se trouve la méthode mise à jour:

Ouvrez un terminal puis:

cd /Library/Developer/CommandLineTools/Packages/
open macOS_SDK_headers_for_macOS_10.14.pkg

Cela ouvrira un assistant d'installation.

Mise à jour 12/2019

Après la mise à jour vers Mojave 10.15.1, il semble que l'utilisation xcode-select --installfonctionne comme prévu.

Samshel
la source
La réinstallation des en-têtes fonctionne également lors de la mise à niveau vers Xcode 10.2.
Bojan Dimovski
Lorsque j'ouvre macOS_SDK_headers_for_macOS_10.14.pkg, j'obtiens un avertissement effrayant de la part du programme d'installation: "Ce package est incompatible avec cette version de macOS et peut échouer à s'installer." J'ai Mojave.
Steve Siegel
@SteveSiegel quelle version de Mac OS utilisez-vous? J'ai mis à niveau vers 10.15.1 et je n'ai plus eu à faire cette solution de contournement. J'ai mis à jour ma réponse pour refléter cela.
Samshel
"mise à jour vers Mojave 10.15.1" c'est incorrect. @SteveSiegel Le pkg est obsolète. SDKROOT doit être utilisé. stackoverflow.com/a/63343829/10063119
anki
23

utilisateurs ubuntu:

sudo apt-get install libc6-dev

spécialement les développeurs ruby ​​qui ont des problèmes d'installation gem install json -v '1.8.2'sur leurs VM

équivalent8
la source
1
Intéressant. Merci. Cette bibliothèque résout également d'autres problèmes. Récemment, je l'ai rencontré en essayant d'exécuter un benchmark pour petabyet.com (qui utilise gcc).
dhaupin
14
Sur linux alpin, j'avais besoinapk add libc-dev
shadi
3

J'ai eu le même problème. J'ai installé "XCode: outils de développement" à partir de l'App Store et cela a résolu le problème pour moi.

Je pense que ce lien aidera: https://itunes.apple.com/us/app/xcode/id497799835?mt=12&ls=1

Merci à Yann Ramin pour ses conseils. Je pense qu'il existe une meilleure solution avec des liens, mais cela a été facile et rapide.

Bonne chance!

nevieandphil
la source
Parlez-vous simplement de Xcode normal? Ou existe-t-il une version spéciale appelée "XCode: outils de développement"? Parce que je ne vois que Xcode normal dans l'App Store. Certes, c'est 4 ans dans le futur à partir du moment où cette réponse a été publiée.
user124384
1

Je sais que mon cas est rare, mais je l'ajouterai toujours ici pour quelqu'un qui le résoudra plus tard. J'avais une cible de module Linux Kernel dans mon Makefile et j'ai essayé de compiler mon programme d'espace utilisateur avec le module noyau qui n'a pas stdio. En faire une cible distincte a résolu le problème.

Soid
la source