Erro fatal GCC: stdio.h: Não existe esse arquivo ou diretório


92

Estou tentando compilar um programa em C no OS X 10.9 com GCC 4.9 (experimental). Por algum motivo, estou recebendo o seguinte erro em tempo de compilação:

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

Em seguida, tentei um programa simples Hello World:

Novamente, ao correr gcc -o ~/hello ~/hello.c, obtive o mesmo erro. Estou usando uma versão experimental do gcc, mas parece improvável que haja um lançamento que gerou erros na importação stdio. O que pode estar causando esse problema e como ele pode ser corrigido?


11
Você pode ver onde o gcc está procurando por arquivos de cabeçalho fazendo echo "#include <bogus.h>" | gcc -v -x c -e examinando os caminhos de pesquisa.
Christian Ternus,

1
Comando muito útil! Parece que não stdio.hestá em nenhum dos caminhos de pesquisa do GCC.
Jules,

2
Mavericks não tem mais uma base / usr / include. Você precisa vinculá-lo ao local a partir do XCode OS 10.9 SDK.
Yann Ramin

3
BTW, int maino primeiro parâmetro de é int e não int * argc.
p0lAris

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

Respostas:


143

Mac OS X

Eu tive esse problema também (encontrado por meio de compiladores Macports). As versões anteriores do Xcode permitiam a instalação de ferramentas de linha de comando por meio de xcode / Preferences, mas o xcode5 não fornece uma opção de ferramentas de linha de comando na GUI, então presumi que fosse incluída automaticamente agora. Tente executar este comando:

Ubuntu

(de acordo com esta resposta )

Alpine Linux

(de acordo com este comentário )


Se você estiver usando o Xcode 6 beta 5, este comando pode falhar. Nesse caso, você precisa fazer sudo xcode-select -s /Applications/Xcode.app. Quando terminar, volte a usar sudo xcode-select -s /Applications/Xcode6-Beta5.app.
Sjors Provoost

1
Uau. Ainda trabalhando com o Xcode 8.0 e o Sierra em 2017.
user124384

1
O guia Alpine é extremamente útil para imagens Docker baseadas em distro alpine, funciona como desejado
VanDavv

alguma sugestão para usuários do Windows? Estou tendo este problema no Windows
Ratul Hasan

1
Para usuários do macOS que ainda estão tendo problemas após a instalação dos CLTs stackoverflow.com/questions/63342521/…

46

Mac OS Mojave

A resposta aceita não funciona mais. Ao executar o comando, xcode-select --installele informa para usar "Atualização de software" para instalar atualizações.

Neste link está o método atualizado:

Abra um Terminal e, em seguida:

Isso abrirá um assistente de instalação.

Atualização 12/2019

Depois de atualizar para o Mojave 10.15.1, parece que o uso xcode-select --installfunciona conforme o esperado .


Reinstalar os cabeçalhos também funciona ao atualizar para o Xcode 10.2.
Bojan Dimovski

Quando abro macOS_SDK_headers_for_macOS_10.14.pkg, recebo um aviso assustador do instalador: "Este pacote é incompatível com esta versão do macOS e pode falhar ao instalar." Eu tenho Mojave.
Steve Siegel

@SteveSiegel qual versão do Mac OS você está usando? Eu atualizei para 10.15.1 e não tive mais que fazer essa solução alternativa. Atualizei minha resposta para refletir isso.
Samshel

"Atualizar para Mojave 10.15.1" está incorreto. @SteveSiegel O pacote está obsoleto. SDKROOT deve ser usado. stackoverflow.com/a/63343829/10063119

23

usuários do Ubuntu:

sudo apt-get install libc6-dev

especialmente desenvolvedores Ruby que têm problemas para instalar gem install json -v '1.8.2'em suas VMs


1
Interessante. Obrigado. Esta biblioteca também resolve alguns outros problemas. Recentemente, eu o encontrei tentando executar um benchmark para petabyet.com (que usa gcc).
dhaupin

14
No linux alpino eu precisavaapk add libc-dev
shadi

3

Eu tive o mesmo problema. Eu instalei "XCode: ferramentas de desenvolvimento" da app store e ele resolveu o problema para mim.

Acho que este link vai ajudar: https://itunes.apple.com/us/app/xcode/id497799835?mt=12&ls=1

Crédito para Yann Ramin por seus conselhos. Acho que tem uma solução melhor com links, mas foi fácil e rápido.

Boa sorte!


Você está se referindo apenas ao Xcode normal? Ou existe alguma versão especial chamada "XCode: ferramentas de desenvolvimento"? Porque eu só vejo o Xcode normal na App Store. Concedido, faltam 4 anos a partir da data em que esta resposta foi postada.
user124384

1

Sei que meu caso é raro, mas ainda vou adicioná-lo aqui para alguém que resolverá o problema mais tarde. Eu tinha um destino de módulo de kernel do Linux em meu Makefile e tentei compilar meu programa de espaço de usuário junto com o módulo de kernel que não tem stdio. Torná-lo um alvo separado resolveu o problema.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.