Eu usei o comando gcc no terminal para compilar programas C, mas de repente, após uma atualização no SO do meu Mac (no macOS 10.14 Mojave e XCode 10.0), comecei a receber a mensagem:
test.c:8:10: fatal error: stdio.h: No such file or directory
#include <stdio.h>
^~~~~~~~~
compilation terminated.
Eu já tenho o gcc instalado, pois posso encontrá-lo /usr/local/bin
e realmente existe um gcc lá. Tentei executar o mesmo arquivo no meu outro iMac e funcionou sem problemas.
Tentei executar xcode-select --install
e ele já estava instalado, portanto, não corrigiu o problema que estou tendo agora. Eu estou supondo que o caminho está bagunçado, pois não parece que ele pode encontrar gcc
depois que comecei a copiar e colar alguns comandos de outros recursos para resolver esse problema.
Gostaria de alguma ajuda sobre isso.
echo "#include <a.h>" | gcc -v -x c -
xocde-select --install
é a solução correta. Para quais serviços você atualizou? Mojave 10.14? Qual XCode você instalou? 10.0 ou outra versão?open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
na linha de comando), eu o instalei/usr/include
novamente e meu GCC 8.2.0 funciona mais uma vez. Obrigado pelo ponteiro; bem feito em encontrá-lo. Sugiro que você escreva a resposta, pois provavelmente haverá outras pessoas enfrentando o problema.Respostas:
TL; DR
Verifique se você baixou o pacote mais recente 'Command Line Tools' e execute-o em um terminal (linha de comando):
Para obter mais informações sobre o Catalina, consulte Não é possível compilar um programa C em um Mac após a atualização para o Catalina 10.15 .
Extrair uma resposta semi-coerente de comentários bastante extensos…
Preâmbulo
Muitas vezes,
xcode-select --install
tem sido a solução correta, mas não parece ajudar neste momento. Você tentou executar a interface principal do Xcode GUI? Pode instalar algum software extra para você e limpar. Fiz isso depois de instalar o Xcode 10.0, mas uma semana ou mais atrás, muito antes de atualizar para o Mojave.Observo que, se o seu GCC estiver instalado
/usr/local/bin
, você provavelmente não está usando o GCC do Xcode; normalmente instalado no/usr/bin
.Também atualizei para o macOS 10.14 Mojave e o Xcode 10.0. No entanto, o sistema
/usr/bin/gcc
e o sistema/usr/bin/clang
estão funcionando para mim (Apple LLVM version 10.0.0 (clang-1000.11.45.2) Target: x86_64-apple-darwin18.0.0
para ambos.) Tenho um problema com o meu GCC 8.2.0 caseiro que não encontra cabeçalhos/usr/include
, o que é paralelo ao seu problema com o fato de/usr/local/bin/gcc
não encontrar cabeçalhos.Fiz algumas comparações e minha máquina Mojave não tem nenhuma
/usr/include
, mas/usr/bin/clang
é capaz de compilar OK. Um cabeçalho (_stdio.h
, com sublinhado à esquerda) estava no meu antigo/usr/include
; está faltando agora (daí o meu problema com o GCC 8.2.0). Eu executeixcode-select --install
e disse "xcode-select: note: install requested for command line developer tools
" e depois executei um instalador da GUI que me mostrou uma licença com a qual eu concordei, e ele baixou e instalou as ferramentas de linha de comando - ou pelo menos foi o que afirmou.Em seguida, executei o Xcode GUI (espaço de comando, Xcode, return) e ele disse que precisava instalar mais software, mas ainda não
/usr/include
. Mas eu posso compilar com/usr/bin/clang
e/usr/bin/gcc
- e a-v
opção sugere que eles estão usandoSolução de trabalho
Então Maxxx observou :
Quando tudo mais falhar, leia o manual ou, neste caso, as notas de versão. Não estou terrivelmente surpreso ao encontrar a Apple querendo dar as costas à sua herança Unix, mas estou decepcionado. Se eles forem cuidadosos, eles poderiam me afastar. Obrigado pela informação.
Depois de instalar o pacote usando o seguinte comando na linha de comando, tenho
/usr/include
novamente e meu GCC 8.2.0 funciona mais uma vez.Download de ferramentas de linha de comando
Como Vesal aponta em um comentário valioso , você precisa fazer o download do pacote Command Line Tools para o Xcode 10.1 no Mojave 10.14, e pode fazê-lo em:
Você precisa fazer o login com um ID Apple para conseguir o download. Quando você tiver feito o download, instale o pacote Command Line Tools. Em seguida, instale os cabeçalhos conforme descrito na seção 'Solução de trabalho'.
Isso funcionou para mim no Mojave 10.14.1. Eu devo ter baixado isso antes, mas eu tinha esquecido quando estava respondendo a essa pergunta.
Atualize para o Mojave 10.14.4 e o Xcode 10.2
Em 17/05/2019, atualizei para o Mojave 10.14.4 e as ferramentas de linha de comando do Xcode 10.2 também foram atualizadas (ou as ferramentas de linha de comando do Xcode 10.1 foram atualizadas para a 10.2). O
open
comando mostrado acima corrigiu os cabeçalhos ausentes. Ainda pode haver aventuras com a atualização do Xcode principal para 10.2 e a reinstalação das ferramentas de linha de comando e do pacote de cabeçalhos.Atualize para o Xcode 10.3 (para Mojave 10.14.6)
Em 2019-07-22, recebi um aviso via App Store de que a atualização para o Xcode 10.3 está disponível e inclui SDKs para iOS 12.4, tvOS 12.4, watchOS 5.3 e macOS Mojave 10.14.6. Instalei-o em uma das minhas máquinas 10.14.5, executei-o e instalei componentes extras, conforme sugerido, e parece que ele permaneceu
/usr/include
intacto.Mais tarde, no mesmo dia, descobri que o macOS Mojave 10.14.6 também estava disponível (Preferências do Sistema Update Atualização de Software), junto com o pacote IIRC de Utilitários de Linha de Comando (foi baixado e instalado automaticamente). A instalação da atualização do / s acabou, mais uma vez
/usr/include
, mas oopen
comando na parte superior da resposta o restabeleceu novamente. A data que eu tinha no arquivo para oopen
comando era 15/07/2019.Atualize para o XCode 11.0 (para Catalina 10.15)
A atualização para o XCode 11.0 ("inclui Swift 5.1 e SDKs para iOS 13, tvOS 13, watchOS 6 e macOS Catalina 10.15") foi lançada em 2019-09-21. Fui notificado de 'atualizações disponíveis' e baixei e instalei em máquinas executando o macOS Mojave 10.14.6 por meio do aplicativo App Store (guia atualizações) sem problemas e sem ter que usar o futz
/usr/include
. Imediatamente após a instalação (antes de executar o aplicativo), tentei uma recompilação e me disseram:Executar that (
sudo xcodebuild -license
) me permitiu executar o compilador. Desde então, executei o aplicativo para instalar componentes extras necessários; ainda não há problema. Resta saber o que acontece quando atualizo para a própria Catalina - mas minhas máquinas macOS Mojave 10.14.6 estão em boas condições no momento (24/09/2019).fonte
/usr/include
e o pacote listado na resposta acima não está presente/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
excode-select --install
diz que as ferramentas de linha de comando atualmente não estão disponíveis.fatal error: bits/ctype_base.h: No such file or directory: #include <bits/ctype_base.h>
ao compilar GCC 7.4.0 usando libstdc ++ em Mojave para mimDepois de tentar todas as respostas que pude encontrar aqui e on-line, ainda estava recebendo erros por alguns cabeçalhos ausentes. Ao tentar compilar pyRFR, eu estava recebendo erros por
stdexcept
não ter sido encontrado, o que aparentemente não foi instalado nos/usr/include
outros cabeçalhos. No entanto, descobri onde estava escondido no Mojave e adicionei isso ao final do meu~/.bash_profile
arquivo:export CPATH=/Library/Developer/CommandLineTools/usr/include/c++/v1
Feito isso, agora posso compilar pyRFR e outros programas C / C ++. De acordo com
echo | gcc -E -Wp,-v -
, o gcc procurava no local antigo esses cabeçalhos (sem o/c++/v1
), mas não o novo local, acrescentando que o CFLAGS o corrigiu.fonte
Quando você
Mojave 10.14.6
/usr/include
foi excluído novamenteThe file /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg does not exist.
excode-select --install xcode-select: error: command line tools are already installed, use "Software Update" to install updates
Então, o que me ajudou a recuperar o pacote mencionado foi a exclusão de toda a
CommandLineTools
pasta(sudo) rm -rf /Library/Developer/CommandLineTools
e a reinstalaçãoxcode-select --install
.fonte
macOS_SDK_headers_for_macOS_10.14.pkg
disponibilização e o comandoopen /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
fizeram o que deveria fazer. Graças um milhão !!export CPATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/include
O problema é que o Xcode, especialmente o Xcode 10.x, não instalou tudo, portanto, verifique se as ferramentas da linha de comando estão instaladas, digite isso no shell do terminal:
Também inicie o Xcode e garanta que toda a instalação necessária esteja instalada (você deve ser avisado se não estiver). Como o Xcode 10 não instala o SDK completo do Mac OS, execute o instalador em
como este pacote não está instalado pelo Xcode 10.
fonte
Encontrei ótima solução e explicação neste comentário do GitHub . O truque:
Fiz o trabalho.
fonte
NOTA: O seguinte é provavelmente altamente contextual e com tempo limitado antes da troca / disponibilidade geral do macos Catalina 10.15. Novo laptop. Estou escrevendo isso em 1º de outubro de 2019.
Essas circunstâncias específicas são, acredito, o que causou problemas de construção para mim. Eles podem não se aplicar na maioria dos outros casos.
Contexto:
macos 10.14.6 Mojave, Xcode 11.0, logo antes do lançamento do macos Catalina 10.15 . Recém-adquirido Macbook Pro.
falha no
pip install psycopg2
, que é, basicamente, um pacote Python sendo compilado a partir do código-fonte.Eu já realizei vários dos ajustes sugeridos nas respostas fornecidas aqui.
Meus erros:
O que fiz até agora, sem consertar nada:
xcode-select --install
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
Ainda o mesmo erro no stdio.h.
que existe em vários locais:
Então, vamos ao primeiro diretório que
clang
está reclamando e veja:Ah, temos um link simbólico para o MacOSX10.15.sdk , mas nenhum para o MacOSX10.15.sdk . Aqui está o meu primeiro
clang
erro novamente:clang: warning: no such sysroot directory: '/Applications/Xcode.app/.../Developer/SDKs/MacOSX10.14.sdk' [-Wmissing-sysroot]
Meu palpite é que a Apple deu um pulo na configuração do xcode e já está pensando que está na Catalina. Por ser um Mac novo, a configuração antiga para 10.14 não está em vigor.
O CONSERTO:
Vamos ligar o link 10.14 da mesma maneira que o 10.15:
ln -s MacOSX.sdk/ MacOSX10.14.sdk
btw, se eu for para esse diretório sdk, encontro:
RESULTADO:
pip install psycopg2
trabalho.Nota: o comando pip install real não fez referência ao MacOSX10.14.sdk , que veio posteriormente, possivelmente pelo mecanismo de instalação do Python que inspeciona a versão do sistema operacional.
fonte
pip
você está usando? Eu acho que esse pode ser o principal problema.Certifique-se de verificar Preferências do Xcode -> Locais.
As ferramentas de linha de comando que eu selecionei foram para a versão anterior do Xcode (8.2.1 em vez de 10.1)
fonte
Teve problemas semelhantes aos do OP
Questão
Tentativa de correção
Eu instalei a versão mais recente do XCode, no entanto, as notas de versão indicaram que o arquivo mencionado na correção anterior, do Jonathan aqui, não estava mais disponível.
Detalhes aqui https://developer.apple.com/documentation/xcode_release_notes/xcode_10_release_notes , na seção Novos Recursos .
Solução que funcionou para mim ...
Usando os detalhes deste comentário, https://github.com/SOHU-Co/kafka-node/issues/881#issuecomment-396197724
Descobri que
brew doctor
havia incluído inclusões não utilizadas na minha/usr/local/
pasta.Então, para corrigir, usei o comando fornecido pelo usuário HowCrazy , para encontrar as não utilizadas e movê-las para uma pasta temporária.
Repetido aqui ...
Após a execução dos scripts, o problema do arquivo de inclusão desapareceu. Nota: também comentei essa questão aqui .
fonte
Eu estava tendo esse problema e nada funcionou . Eu corri
xcode-select --install
e também instalei/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
.FUNDO
Como estava tendo problemas com a App Store em um novo laptop, fui forçado a baixar o instalador do Xcode Beta no site da Apple para instalar o Xcode fora da App Store . Então, eu só tinha o Xcode Beta instalado.
SOLUÇÃO
Isso (eu acho) estava fazendo
clang
para não encontrar oSDKROOT
diretório/Applications/Xcode.app/....
, porque não háBeta
no caminho, ou talvez o Xcode Beta simplesmente não o instale (eu não sei). Para corrigir o problema, tive que remover o Xcode Beta e resolver o problema da App Store para instalar a versão de lançamento.tldr;
Se você possui o Xcode Beta , tente limpar tudo e instalar a versão de lançamento antes de experimentar as soluções que estão funcionando para outras pessoas.
fonte
Eu tentei quase todas as soluções postadas e nada funcionou para mim. Uso o Mojave OS (10.14.6) e o que finalmente funcionou para mim (depois de remover e reinstalar os cabeçalhos Xcode, CLTs e SDK):
com
Agora os pacotes R que dependem dos compiladores C são instalados com sucesso
fonte
Como Jonathan Leffler aponta acima, o arquivo macOS_SDK_headers.pkg não está mais no Xcode 10.1.
O que funcionou para mim foi fazer
brew upgrade
e as atualizações do gcc e / ou de qualquer outra coisa que o homebrew fez nos bastidores resolveu os problemas do caminho.fonte
A dependência do apue.h ainda estava faltando no meu
/usr/local/include
depois que eu consegui corrigir esse problema no Mac OS Catalina seguindo as instruções desta respostaEu baixei a dependência manualmente do git e a coloquei em
/usr/local/include
fonte
Eu tive o mesmo problema com o Golang (depuração com Goland) após a migração. A única coisa (ridícula) que ajudou é renomear a seguinte pasta:
Aparentemente, está relacionado a arquivos antigos que o homebrew instalou e agora está quebrado.
fonte
@JL Peyret está certo!
se você usa o Mojave 10.14.6, Xcode 11.0+
então
cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs
sudo ln -s MacOSX.sdk / MacOSX10.14.sdk
fonte