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/bin
y realmente hay un gcc allí. Intenté ejecutar el mismo archivo en mi otro iMac y funcionó sin ningún problema.
Intenté ejecutar xcode-select --install
y 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 gcc
despué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 --install
es 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.pkg
en la línea de comando), lo tengo/usr/include
nuevamente, 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 --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 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/include
nuevamente, 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
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 elopen
comando en la parte superior de la respuesta la restableció nuevamente. La fecha que tenía en el archivo para elopen
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: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.pkg
yxcode-select --install
dice 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
stdexcept
no ser encontrado, que aparentemente no estaba instalado/usr/include
con los otros encabezados. Sin embargo, encontré dónde se escondía en Mojave y agregué esto al final de mi~/.bash_profile
archivo:export CPATH=/Library/Developer/CommandLineTools/usr/include/c++/v1
Una 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/include
fue 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 updates
Luego, lo que me ayudó a recuperar el paquete mencionado, fue eliminar toda la
CommandLineTools
carpeta(sudo) rm -rf /Library/Developer/CommandLineTools
y volver a instalarlaxcode-select --install
.fuente
macOS_SDK_headers_for_macOS_10.14.pkg
ponen a disposición y el comandoopen /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
hizo 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/include
El 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 --install
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
Sigue siendo el mismo error en stdio.h.
que existe en varios lugares:
Entonces, vamos al primer directorio del que
clang
se queja y miremos:Ja, tenemos un enlace simbólico para MacOSX10.15.sdk , pero ninguno para MacOSX10.14.sdk . Aquí está mi primer
clang
error 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.sdk
por cierto, si voy al directorio sdk, encuentro:
SALIR:
pip install psycopg2
trabajos.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
pip
estas 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 doctor
informó 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 --install
y 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
clang
para no encontrar elSDKROOT
directorio/Applications/Xcode.app/....
, porque no hayBeta
en 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 upgrade
y 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/include
despué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/include
fuente
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