requisitos - macos mojave
No se puede compilar el programa C en una Mac después de actualizar a Mojave (8)
He utilizado 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 gcc instalado porque lo puedo encontrar en
/usr/local/bin
y realmente hay un gcc ahí.
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 el camino está desordenado, 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.
Me gustaría un poco de ayuda en esto.
TL; DR
Asegúrese de haber descargado el último paquete de ''Herramientas de línea de comando'' y ejecútelo desde una terminal (línea de comando):
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
Extrayendo una respuesta semi-coherente de comentarios bastante extensos ...
Preámbulo
Muy a menudo,
xcode-select --install
ha sido la solución correcta, pero no parece ayudar esta vez.
¿Has intentado ejecutar la interfaz principal de Xcode GUI?
Puede instalar algún software adicional para usted y limpiar.
Hice eso 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 en
/usr/local/bin
, probablemente no esté utilizando 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
están funcionando 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 creado en casa que no encuentra los encabezados en
/usr/include
, que es paralelo a su problema con
/usr/local/bin/gcc
tampoco encuentra los encabezados.
He hecho un poco de comparación, y mi máquina Mojave no tiene
/usr/include
en absoluto, pero
/usr/bin/clang
puede compilar OK.
Un encabezado (
_stdio.h
, con un guión bajo) estaba en mi antiguo
/usr/include
;
falta ahora (de ahí mi problema con GCC 8.2.0).
xcode-select --install
y dije "
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ó la línea de comandos Herramientas - o eso decía.
Luego ejecuté Xcode GUI (comando-espacio, Xcode, retorno) y me 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 opción
-v
sugiere que están usando
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
Solución de trabajo
Entonces noted :
He encontrado una manera. Si estamos usando Xcode 10, notará que si navega hasta
/usr
en el Finder, no verá más una carpeta llamada ''include'', por lo que el terminal se queja de la ausencia de los archivos de encabezado, que es Contenida dentro de la carpeta ''incluir''. En las developer.apple.com/documentation/xcode_release_notes/… , dice que hay un paquete:
/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
y debe instalar ese paquete para tener instalada la carpeta
/usr/include
. Entonces deberías ser bueno para ir.
Cuando todo lo demás falle, lea el manual o, en este caso, las notas de la versión. No estoy terriblemente sorprendido de encontrar a Apple queriendo dar la espalda a su herencia de Unix, pero estoy decepcionado. Si tienen cuidado, podrían alejarme. Gracias por la información.
Después de instalar el paquete con el siguiente comando en la línea de comandos, 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
Descarga de herramientas de línea de comandos
Como Vesal señala en un comment valioso, debe descargar el paquete de herramientas de línea de comandos para Xcode 10.1 en Mojave 10.14, y puede hacerlo desde:
Debes iniciar sesión con un ID de Apple para poder obtener la descarga. Cuando haya terminado 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 me funcionó en Mojave 10.14.1. Debo haber descargado esto antes, pero me había olvidado cuando estaba respondiendo esta pregunta.
Actualizar a Mojave 10.14.4 y XCode 10.2
En o alrededor de 2019-05-17, actualicé a Mojave 10.14.4, y las herramientas de línea de comandos XCode 10.2 también se actualizaron (o las herramientas de línea de comandos XCode 10.1 se actualizaron a 10.2).
El comando de
open
mostrado arriba reparó los encabezados faltantes.
Es posible que aún haya aventuras con la actualización del XCode principal a 10.2 y luego reinstalar las herramientas de la línea de comandos y el paquete de encabezados.
Actualizar a XCode 10.3 (para Mojave 10.14.6)
El 2019-07-22, recibí una notificación en la App Store 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 sugirió, y parece que ha dejado intacto
/usr/include
.
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 de o / s, una vez más, eliminó
/usr/include
, pero el comando de
open
en la parte superior de la respuesta lo restableció nuevamente.
La fecha que tenía en el archivo para el comando
open
era 2019-07-15.
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)
Como Jonathan Leffler señala arriba, el archivo macOS_SDK_headers.pkg ya no está en Xcode 10.1.
Lo que funcionó para mí fue hacer la
brew upgrade
y las actualizaciones de gcc y / o lo que sea que hizo Homebrew detrás de escena resolvieron los problemas del camino.
Después de probar todas las respuestas que pude encontrar aquí y en línea, todavía estaba recibiendo errores por algunos encabezados faltantes.
Al intentar compilar pyRFR, recibía errores acerca de que no se encontró el
stdexcept
, que aparentemente no se instaló en
/usr/include
con los otros encabezados.
Sin embargo, encontré dónde se escondía en Mojave y lo agregué al final de mi archivo
~/.bash_profile
:
export CPATH=/Library/Developer/CommandLineTools/usr/include/c++/v1
Habiendo hecho eso, ahora puedo compilar pyRFR y otros programas C / C ++.
Según
echo | gcc -E -Wp,-v -
echo | gcc -E -Wp,-v -
, gcc estaba buscando en la ubicación antigua estos encabezados (sin el
/c++/v1
), pero no la nueva ubicación, por lo que agregarlos a CFLAGS lo solucionó.
El problema es que Xcode, especialmente Xcode 10.x, no ha instalado todo, así que asegúrese de que las herramientas de la línea de comandos estén instaladas, escriba esto en un shell de terminal:
xcode-select --install
también inicie XCode y asegúrese de que esté instalada toda la instalación requerida (si no lo está, se le pedirá que lo haga) y, como XCode 10 no instala el SDK de Mac OS completo, ejecute el instalador en
/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
ya que este paquete no está instalado por XCode 10.
Estaba teniendo este problema y
nada funcionó
.
xcode-select --install
y también instalé
/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
.
FONDO
Como tenía problemas con la App Store en una computadora portátil nueva, me vi obligado a descargar el instalador XCode Beta del sitio web de Apple para instalar XCode fuera de la App Store . Entonces solo tuve XCode Beta instalado.
SOLUCIÓN
Esto, (creo), estaba haciendo un
clang
para no encontrar el directorio
/Applications/Xcode.app/....
, porque no hay
Beta
en la ruta, o quizás
XCode
Beta
simplemente no lo instala (no No 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.
He encontrado una gran solución y explicación en este comentario de GitHub . El truco:
make SDKROOT=`xcrun --show-sdk-path` MACOSX_DEPLOYMENT_TARGET=
Hizo el trabajo
Tuvo problemas similares a los del OP.
Problema
gato hola.c
#include <stdlib.h>
int main() { exit(0); }
clang hello.c
/usr/local/include/stdint.h:2:10: error: #include nested too deeply
etc...
Intento de arreglar
Instalé la última versión de XCode, sin embargo, las notas de la versión indicaban que el archivo mencionado en la solución anterior, de Jonathan aquí, ya no estaba disponible.
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
Más detalles aquí developer.apple.com/documentation/xcode_release_notes/… , en la sección Nuevas características .
Solución que me funcionó ...
Usando los detalles en este comentario, https://github.com/SOHU-Co/kafka-node/issues/881#issuecomment-396197724
Descubrí que el informe de
brew doctor
informaba que tenía inutilizados en mi carpeta
/usr/local/
.
Así que para solucionarlo, utilicé el comando provisto por el usuario https://github.com/SOHU-Co/kafka-node/issues/881#issuecomment-396197724 , para encontrar los https://github.com/SOHU-Co/kafka-node/issues/881#issuecomment-396197724 no utilizados y moverlos a una carpeta temporal.
Repetido aquí ...
mkdir /tmp/includes
brew doctor 2>&1 | grep "/usr/local/include" | awk ''{$1=$1;print}'' | xargs -I _ mv _ /tmp/includes
Después de ejecutar los scripts, el problema del archivo incluido desapareció. NB: También comenté sobre este tema here .