TL; DR
Verifique se você baixou o pacote mais recente 'Command Line Tools' e execute-o em um terminal (linha de comando):
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
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 executei xcode-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 usando
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
Solução de trabalho
Então Maxxx observou :
Eu encontrei um caminho. Se estivermos usando o Xcode 10, você notará que, se navegar para o /usr
Finder, não verá mais uma pasta chamada 'include', e é por isso que o terminal reclama da ausência dos arquivos de cabeçalho que estão contidos dentro a pasta 'incluir'. Nas notas de versão do Xcode 10.0 , ele diz que há um pacote:
/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
e você deve instalar esse pacote para ter a /usr/include
pasta instalada. Então você deve estar pronto para ir.
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.
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
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 o open
comando na parte superior da resposta o restabeleceu novamente. A data que eu tinha no arquivo para o open
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:
Concordando com a licença Xcode / iOS requer privilégios de administrador, execute “sudo xcodebuild -license” e tente novamente este comando.
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).
echo "#include <a.h>" | gcc -v -x c -