TL; DR
Assicurati di aver scaricato l'ultimo pacchetto "Strumenti da riga di comando" ed eseguilo da un terminale (riga di comando):
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
Per alcune informazioni su Catalina, vedi Impossibile compilare un programma C su un Mac dopo l'aggiornamento a Catalina 10.15 .
Estrarre una risposta semi-coerente da commenti piuttosto estesi ...
Preambolo
Molto spesso, xcode-select --install
è stata la soluzione corretta, ma questa volta non sembra aiutare. Hai provato a eseguire l'interfaccia principale della GUI di Xcode? Potrebbe installare del software aggiuntivo per te e ripulirlo. L'ho fatto dopo aver installato Xcode 10.0, ma una settimana o più fa, molto prima di passare a Mojave.
Osservo che se il tuo GCC è installato in /usr/local/bin
, probabilmente non stai usando GCC da Xcode; che è normalmente installato in /usr/bin
.
Anch'io ho aggiornato a macOS 10.14 Mojave e Xcode 10.0. Tuttavia, sia il sistema /usr/bin/gcc
che il sistema /usr/bin/clang
funzionano per me ( Apple LLVM version 10.0.0 (clang-1000.11.45.2) Target: x86_64-apple-darwin18.0.0
per entrambi.) Ho un problema con il mio GCC 8.2.0 costruito in casa che non trova le intestazioni /usr/include
, il che è parallelo al tuo problema di /usr/local/bin/gcc
non trovare neanche le intestazioni.
Ho fatto un po 'di confronto, e la mia macchina Mojave non ha /usr/include
affatto, ma /usr/bin/clang
è in grado di compilare OK. Un'intestazione ( _stdio.h
, con trattino basso) era nel mio vecchio /usr/include
; ora manca (quindi il mio problema con GCC 8.2.0). Ho eseguito xcode-select --install
e ha detto " xcode-select: note: install requested for command line developer tools
" e quindi ha eseguito un programma di installazione della GUI che mi ha mostrato una licenza che ho accettato, e ha scaricato e installato gli strumenti della riga di comando - o almeno così ha affermato.
Ho quindi eseguito Xcode GUI (command-space, Xcode, return) e ha detto che doveva installare altro software, ma ancora no /usr/include
. Ma posso compilare con /usr/bin/clang
e /usr/bin/gcc
- e l' -v
opzione suggerisce che stanno usando
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
Soluzione di lavoro
Quindi Maxxx ha osservato :
Ho trovato un modo. Se stiamo usando Xcode 10, noterai che se navighi /usr
nel Finder, non vedrai più una cartella chiamata 'include', motivo per cui il terminale si lamenta dell'assenza dei file di intestazione contenuti all'interno la cartella "include". Nelle note di rilascio di Xcode 10.0 , dice che esiste un pacchetto:
/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
e dovresti installare quel pacchetto per avere la /usr/include
cartella installata. Allora dovresti essere bravo ad andare.
Quando tutto il resto fallisce, leggi il manuale o, in questo caso, le note di rilascio. Non sono terribilmente sorpreso di trovare Apple che volesse voltare le spalle alla loro eredità Unix, ma sono delusa. Se stanno attenti, potrebbero scacciarmi. Grazie per l'informazione.
Dopo aver installato il pacchetto utilizzando il seguente comando nella riga di comando, l'ho /usr/include
nuovamente eseguito e il mio GCC 8.2.0 funziona ancora una volta.
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
Download degli strumenti da riga di comando
Come Vesal sottolinea in un prezioso commento , è necessario scaricare il pacchetto degli strumenti da riga di comando per Xcode 10.1 su Mojave 10.14, e puoi farlo da:
Devi accedere con un ID Apple per poter scaricare. Al termine del download, installa il pacchetto Strumenti da riga di comando. Quindi installare le intestazioni come descritto nella sezione "Soluzione di lavoro".
Questo ha funzionato per me su Mojave 10.14.1. Devo averlo scaricato prima, ma avevo dimenticato quando stavo rispondendo a questa domanda.
Aggiorna a Mojave 10.14.4 e Xcode 10.2
Il 17 maggio 2019 o circa, ho effettuato l'aggiornamento a Mojave 10.14.4 e sono stati aggiornati anche gli strumenti della riga di comando Xcode 10.2 (o gli strumenti della riga di comando Xcode 10.1 sono stati aggiornati alla 10.2). Il open
comando mostrato sopra ha corretto le intestazioni mancanti. Potrebbero esserci ancora delle avventure con l'aggiornamento dell'Xcode principale a 10.2 e la reinstallazione degli strumenti da riga di comando e del pacchetto delle intestazioni.
Aggiorna a Xcode 10.3 (per Mojave 10.14.6)
Il 22-07-2019, tramite App Store, ho notato che è disponibile l'aggiornamento a Xcode 10.3 e che include SDK per iOS 12.4, tvOS 12.4, watchOS 5.3 e macOS Mojave 10.14.6. L'ho installato su una delle mie macchine 10.14.5, l'ho eseguito e ho installato componenti aggiuntivi come suggerito, e sembra che siano rimasti /usr/include
intatti.
Più tardi lo stesso giorno, ho scoperto che era disponibile anche macOS Mojave 10.14.6 (Preferenze di Sistema ⟶ Aggiornamento software), insieme a un pacchetto di utilità della riga di comando IIRC (scaricato e installato automaticamente). L'installazione dell'aggiornamento di o / s ha, ancora una volta, cancellato /usr/include
, ma il open
comando nella parte superiore della risposta lo ha ripristinato di nuovo. La data che avevo sul file per il open
comando era il 15-07-2019.
Aggiornamento a XCode 11.0 (per Catalina 10.15)
L'aggiornamento a XCode 11.0 ("include Swift 5.1 e SDK per iOS 13, tvOS 13, watchOS 6 e macOS Catalina 10.15") è stato rilasciato il 21/09/2019. Sono stato informato di "aggiornamenti disponibili", scaricato e installato su macchine che eseguono macOS Mojave 10.14.6 tramite l'app App Store (scheda degli aggiornamenti) senza problemi e senza dover procedere /usr/include
. Immediatamente dopo l'installazione (prima di eseguire l'applicazione stessa), ho provato una ricompilazione e mi è stato detto:
Accettare la licenza Xcode / iOS richiede i privilegi di amministratore, eseguire "sudo xcodebuild -license" e quindi ripetere questo comando.
L'esecuzione di that ( sudo xcodebuild -license
) mi ha permesso di eseguire il compilatore. Da allora, ho eseguito l'applicazione per installare componenti extra di cui ha bisogno; ancora nessun problema. Resta da vedere cosa succede quando eseguo l'aggiornamento a Catalina stesso, ma le mie macchine macOS Mojave 10.14.6 sono entrambe OK al momento (24-09-2019).
echo "#include <a.h>" | gcc -v -x c -