TL; DR
Asegúrese de haber descargado el último paquete de 'Herramientas de línea de comandos' y ejecútelo desde un terminal (línea de comandos):
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
Para obtener información sobre Catalina, consulte No se puede compilar un programa C en una Mac después de actualizar a Catalina 10.15 .
Extrayendo una respuesta semi-coherente de comentarios bastante extensos ...
Preámbulo
Muy a menudo, xcode-select --install
ha sido la solución correcta, pero esta vez no parece ayudar. ¿Has intentado ejecutar la interfaz principal de Xcode GUI? Puede instalar algún software adicional para usted y limpiarlo. Lo hice después de instalar Xcode 10.0, pero hace una semana o más, mucho antes de actualizar a Mojave.
Observo que si su GCC está instalado /usr/local/bin
, probablemente no esté usando el GCC de Xcode; que normalmente se instala en/usr/bin
.
Yo también he actualizado a macOS 10.14 Mojave y Xcode 10.0. Sin embargo, tanto el sistema /usr/bin/gcc
como el sistema /usr/bin/clang
funcionan para mí ( Apple LLVM version 10.0.0 (clang-1000.11.45.2) Target: x86_64-apple-darwin18.0.0
para ambos). Tengo un problema con mi GCC 8.2.0 de fabricación casera que no encuentra encabezados /usr/include
, lo cual es paralelo a su problema de /usr/local/bin/gcc
no encontrar encabezados tampoco.
He hecho un poco de comparación, y mi máquina Mojave no tiene nada /usr/include
, pero /usr/bin/clang
puede compilar OK. Un encabezado ( _stdio.h
con guión bajo) estaba en mi viejo /usr/include
; falta ahora (de ahí mi problema con GCC 8.2.0). Ejecuté xcode-select --install
y dijo " xcode-select: note: install requested for command line developer tools
" y luego ejecuté un instalador de GUI que me mostró una licencia que acepté, y descargó e instaló las herramientas de línea de comandos, o eso afirmaba.
Luego ejecuté Xcode GUI (espacio de comando, Xcode, return) y dijo que necesitaba instalar más software, pero aún no /usr/include
. Pero puedo compilar con /usr/bin/clang
y /usr/bin/gcc
, y la -v
opción sugiere que están usando
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
Solución de trabajo
Entonces Maxxx notó :
He encontrado un camino. Si estamos utilizando Xcode 10, notará que si navega hasta el /usr
en el Finder, ya no verá una carpeta llamada 'incluir', por lo que el terminal se queja de la ausencia de los archivos de encabezado que contiene la carpeta 'incluir'. En las Notas de la versión de Xcode 10.0 , dice que hay un paquete:
/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
y debe instalar ese paquete para tener la /usr/include
carpeta instalada. Entonces deberías ser bueno para ir.
Cuando todo lo demás falla, lea el manual o, en este caso, las notas de la versión. No estoy terriblemente sorprendido de encontrar a Apple queriendo darle la espalda a su herencia Unix, pero estoy decepcionado. Si tienen cuidado, podrían alejarme. Gracias por la información.
Habiendo instalado el paquete usando el siguiente comando en la línea de comando, lo tengo /usr/include
nuevamente, y mi GCC 8.2.0 funciona una vez más.
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
Descargar herramientas de línea de comandos
Como Vesal señala en un comentario valioso , debe descargar el paquete de herramientas de línea de comandos para Xcode 10.1 en Mojave 10.14, y puede hacerlo desde:
Debe iniciar sesión con un ID de Apple para poder descargar. Cuando haya realizado la descarga, instale el paquete de herramientas de línea de comandos. Luego instale los encabezados como se describe en la sección 'Solución de trabajo'.
Esto funcionó para mí en Mojave 10.14.1. Debo haber descargado esto antes, pero me había olvidado cuando respondí esta pregunta.
Actualice a Mojave 10.14.4 y Xcode 10.2
El o alrededor del 2019-05-17, actualicé a Mojave 10.14.4, y las herramientas de línea de comando Xcode 10.2 también se actualizaron (o las herramientas de línea de comando Xcode 10.1 se actualizaron a 10.2). El open
comando que se muestra arriba corrigió los encabezados faltantes. Todavía puede haber aventuras con la actualización de Xcode principal a 10.2 y luego reinstalar las herramientas de línea de comandos y el paquete de encabezados.
Actualice a Xcode 10.3 (para Mojave 10.14.6)
El 22 de julio de 2019, recibí un aviso a través de la App Store de que la actualización a Xcode 10.3 está disponible y que incluye SDK para iOS 12.4, tvOS 12.4, watchOS 5.3 y macOS Mojave 10.14.6. Lo instalé en una de mis máquinas 10.14.5, lo ejecuté e instalé componentes adicionales como sugería, y parece que se ha quedado /usr/include
intacto.
Más tarde, el mismo día, descubrí que macOS Mojave 10.14.6 también estaba disponible (Preferencias del sistema Update Actualización de software), junto con un paquete de Utilidades de línea de comandos IIRC (se descargó e instaló automáticamente). La instalación de la actualización o / s, una vez más, eliminó /usr/include
, pero el open
comando en la parte superior de la respuesta la restableció nuevamente. La fecha que tenía en el archivo para el open
comando fue 2019-07-15.
Actualice a XCode 11.0 (para Catalina 10.15)
La actualización a XCode 11.0 ("incluye Swift 5.1 y SDK para iOS 13, tvOS 13, watchOS 6 y macOS Catalina 10.15") se lanzó 2019-09-21. Me notificaron las 'actualizaciones disponibles', y las descargué e instalé en máquinas que ejecutan macOS Mojave 10.14.6 a través de la aplicación App Store (pestaña de actualizaciones) sin problemas y sin tener que preocuparme /usr/include
. Inmediatamente después de la instalación (antes de ejecutar la aplicación en sí), probé una recompilación y me dijeron:
Aceptar la licencia Xcode / iOS requiere privilegios de administrador, ejecute "sudo xcodebuild -license" y vuelva a intentar este comando.
Ejecutar that ( sudo xcodebuild -license
) me permitió ejecutar el compilador. Desde entonces, ejecuté la aplicación para instalar los componentes adicionales que necesita; Todavía no hay problema. Queda por ver qué sucede cuando actualizo a Catalina, pero mis máquinas macOS Mojave 10.14.6 están bien por el momento (2019-09-24).
echo "#include <a.h>" | gcc -v -x c -