He usado el comando gcc en el terminal para compilar programas en C, pero de repente, después de una actualización del sistema operativo de mi Mac (a macOS 10.14 Mojave y XCode 10.0), comencé a recibir el mensaje:
test.c:8:10: fatal error: stdio.h: No such file or directory
#include <stdio.h>
^~~~~~~~~
compilation terminated.
Ya tengo instalado gcc ya que puedo encontrarlo /usr/local/biny realmente hay un gcc allí. Intenté ejecutar el mismo archivo en mi otro iMac y funcionó sin ningún problema.
Intenté ejecutar xcode-select --instally ya estaba instalado, por lo tanto, no solucionó el problema que tengo ahora. Supongo que la ruta está en mal estado, ya que no parece que pueda encontrar gccdespués de que comencé a copiar y pegar algunos comandos de otros recursos para resolver este problema.
Quisiera ayuda en esto.

echo "#include <a.h>" | gcc -v -x c -xocde-select --installes la solución correcta. ¿A qué o / s te actualizaste? Mojave 10.14? ¿Qué XCode tienes instalado? 10.0 u otra versión?open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkgen la línea de comando), lo tengo/usr/includenuevamente, y mi GCC 8.2.0 funciona una vez más. Gracias por la anotación; bien hecho por encontrarlo. Le sugiero que escriba la respuesta, ya que probablemente habrá otras personas que se encuentren con el problema.Respuestas:
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):
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 --installha 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/gcccomo el sistema/usr/bin/clangfuncionan para mí (Apple LLVM version 10.0.0 (clang-1000.11.45.2) Target: x86_64-apple-darwin18.0.0para 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/gccno encontrar encabezados tampoco.He hecho un poco de comparación, y mi máquina Mojave no tiene nada
/usr/include, pero/usr/bin/clangpuede compilar OK. Un encabezado (_stdio.hcon guión bajo) estaba en mi viejo/usr/include; falta ahora (de ahí mi problema con GCC 8.2.0). Ejecutéxcode-select --instally 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/clangy/usr/bin/gcc, y la-vopción sugiere que están usandoSolución de trabajo
Entonces Maxxx notó :
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/includenuevamente, y mi GCC 8.2.0 funciona una vez más.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
opencomando 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/includeintacto.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 elopencomando en la parte superior de la respuesta la restableció nuevamente. La fecha que tenía en el archivo para elopencomando 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: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).fuente
/usr/include, y el paquete que figura en la respuesta anterior no está presente/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkgyxcode-select --installdice que las herramientas de línea de comandos actualmente no están disponibles.fatal error: bits/ctype_base.h: No such file or directory: #include <bits/ctype_base.h>al compilar GCC 7.4.0 usando libstdc ++ en Mojave para míDespués de probar todas las respuestas que pude encontrar aquí y en línea, seguía recibiendo errores para algunos encabezados faltantes. Al intentar compilar pyRFR, recibía errores sobre
stdexceptno ser encontrado, que aparentemente no estaba instalado/usr/includecon los otros encabezados. Sin embargo, encontré dónde se escondía en Mojave y agregué esto al final de mi~/.bash_profilearchivo:export CPATH=/Library/Developer/CommandLineTools/usr/include/c++/v1Una vez hecho eso, ahora puedo compilar pyRFR y otros programas C / C ++. Según
echo | gcc -E -Wp,-v -, gcc estaba buscando en la ubicación anterior estos encabezados (sin la/c++/v1), pero no la nueva ubicación, por lo que agregarlo a CFLAGS lo solucionó.fuente
Cuando usted
Mojave 10.14.6/usr/includefue eliminado nuevamenteThe file /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg does not exist.yxcode-select --install xcode-select: error: command line tools are already installed, use "Software Update" to install updatesLuego, lo que me ayudó a recuperar el paquete mencionado, fue eliminar toda la
CommandLineToolscarpeta(sudo) rm -rf /Library/Developer/CommandLineToolsy volver a instalarlaxcode-select --install.fuente
macOS_SDK_headers_for_macOS_10.14.pkgponen a disposición y el comandoopen /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkghizo lo que se suponía que debía hacer. ¡¡Un millón de gracias!!export CPATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/includeEl problema es que Xcode, especialmente Xcode 10.x, no ha instalado todo, así que asegúrese de que las herramientas de línea de comandos estén instaladas, escriba esto en un shell de terminal:
también inicie Xcode y asegúrese de que toda la instalación requerida esté instalada (se le solicitará si no es así) y dado que Xcode 10 no instala el SDK completo de Mac OS, ejecute el instalador en
ya que este paquete no está instalado por Xcode 10.
fuente
He encontrado una gran solución y explicación en este comentario de GitHub . El truco:
Hizo el trabajo.
fuente
NOTA: Lo siguiente es probablemente altamente contextual y de tiempo limitado antes del cambio / disponibilidad general de macos Catalina 10.15. Nueva laptop. Estoy escribiendo este 1 de octubre de 2019.
Estas circunstancias específicas son, creo, lo que me causó problemas de construcción. Es posible que no se apliquen en la mayoría de los otros casos.
Contexto:
macos 10.14.6 Mojave, Xcode 11.0, justo antes del lanzamiento de macos Catalina 10.15 . Macbook Pro recién comprado.
fallo en
pip install psycopg2, que es, básicamente, un paquete de Python que se compila desde la fuente.Ya he llevado a cabo una serie de ajustes sugeridos en las respuestas que se dan aquí.
Mis errores:
Lo que hice hasta ahora, sin arreglar nada:
xcode-select --installopen /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkgSigue siendo el mismo error en stdio.h.
que existe en varios lugares:
Entonces, vamos al primer directorio del que
clangse queja y miremos:Ja, tenemos un enlace simbólico para MacOSX10.15.sdk , pero ninguno para MacOSX10.14.sdk . Aquí está mi primer
clangerror nuevamente:clang: warning: no such sysroot directory: '/Applications/Xcode.app/.../Developer/SDKs/MacOSX10.14.sdk' [-Wmissing-sysroot]Supongo que Apple saltó el arma en su configuración de xcode y ya está pensando que están en Catalina. Dado que es una Mac nueva, la configuración anterior para 10.14 no está en su lugar.
LA SOLUCIÓN:
Hagamos un enlace simbólico 10.14 de la misma manera que 10.15:
ln -s MacOSX.sdk/ MacOSX10.14.sdkpor cierto, si voy al directorio sdk, encuentro:
SALIR:
pip install psycopg2trabajos.Nota: el comando de instalación de pip real no hizo referencia a MacOSX10.14.sdk , que llegó en un momento posterior, posiblemente por el mecanismo de instalación de Python que introspectaba la versión del sistema operativo.
fuente
pipestas usando Creo que ese podría ser el problema clave.Asegúrese de verificar las Preferencias de Xcode -> Ubicaciones.
Las herramientas de línea de comandos que había seleccionado eran para la versión anterior de Xcode (8.2.1 en lugar de 10.1)
fuente
Tuve problemas similares a los del OP
Problema
Intento de reparación
Instalé la última versión de XCode, sin embargo, las notas de la versión indicaban que el archivo mencionado en la corrección anterior, de Jonathan aquí, ya no estaba disponible.
Detalles aquí https://developer.apple.com/documentation/xcode_release_notes/xcode_10_release_notes , en la sección Nuevas características .
Solución que funcionó para mí ...
Usando detalles en este comentario, https://github.com/SOHU-Co/kafka-node/issues/881#issuecomment-396197724
Encontré que
brew doctorinformó que tenía inclusiones no utilizadas en mi/usr/local/carpeta.Entonces, para solucionarlo, utilicé el comando proporcionado por el usuario HowCrazy , para encontrar las inclusiones no utilizadas y moverlas a una carpeta temporal.
Repetido aquí ...
Después de ejecutar los scripts, el problema del archivo de inclusión desapareció. Nota: también he comentado sobre este tema aquí .
fuente
Estaba teniendo este problema y nada funcionó . Corrí
xcode-select --instally también instalé/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg.ANTECEDENTES
Como tenía problemas con App Store en una nueva computadora portátil, me vi obligado a descargar el instalador Xcode Beta del sitio web de Apple para instalar Xcode fuera de App Store . Entonces solo tenía Xcode Beta instalado.
SOLUCIÓN
Esto, (creo), estaba haciendo
clangpara no encontrar elSDKROOTdirectorio/Applications/Xcode.app/...., porque no hayBetaen el camino, o tal vez Xcode Beta simplemente no lo instala (no lo sé). Para solucionar el problema, tuve que eliminar Xcode Beta y resolver el problema de App Store para instalar la versión de lanzamiento.tldr;
Si tiene Xcode Beta , intente limpiar todo e instalar la versión de lanzamiento antes de probar las soluciones que funcionan para otras personas.
fuente
Probé casi todas las soluciones publicadas y nada funcionó para mí. Uso Mojave OS (10.14.6) y lo que finalmente funcionó para mí (después de quitar y reinstalar Xcode y CLT y encabezados SDK):
con
Ahora los paquetes R que se basan en compiladores C se instalan con éxito
fuente
Como Jonathan Leffler señala anteriormente, el archivo macOS_SDK_headers.pkg ya no está en Xcode 10.1.
Lo que funcionó para mí fue hacer
brew upgradey las actualizaciones de gcc y / o cualquier otra cosa que homebrew hiciera detrás de escena resolvió los problemas del camino.fuente
La dependencia de apue.h todavía faltaba en mi
/usr/local/includedespués de que logré solucionar este problema en Mac OS Catalina siguiendo las instrucciones de esta respuestaDescargué la dependencia manualmente desde git y la coloqué en
/usr/local/includefuente
Tuve el mismo problema con Golang (depuración con Goland) después de la migración. Lo único (ridículo) que ayudó fue renombrar la siguiente carpeta:
Aparentemente está relacionado con archivos antiguos que Homebrew instaló y ahora está roto.
fuente
@JL Peyret tiene razón!
si tienes macos 10.14.6 Mojave, Xcode 11.0+
luego
cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs
sudo ln -s MacOSX.sdk / MacOSX10.14.sdk
fuente