Error fatal de GCC: stdio.h: no existe tal archivo o directorio

90

Estoy intentando compilar un programa en C en OS X 10.9 con GCC 4.9 (experimental). Por alguna razón, recibo el siguiente error en tiempo de compilación:

gcc: fatal error: stdio.h: No such file or directory

Luego probé un programa simple de Hello World:

#include <stdio.h>

int main(int argc, const char *argv[])
{
    printf("Hello, world!");
    return 0;
}

Nuevamente, al ejecutar gcc -o ~/hello ~/hello.c, obtuve el mismo error. Estoy usando una versión experimental de gcc, pero no parece plausible que haya una versión que genere errores al importar stdio. ¿Qué podría estar causando este problema y cómo se puede solucionar?

Jules
fuente
11
Puede ver dónde está buscando gcc los archivos de encabezado haciendo echo "#include <bogus.h>" | gcc -v -x c -y examinando las rutas de búsqueda.
Christian Ternus
1
¡Comando muy útil! No parece estar stdio.hen ninguna de las rutas de búsqueda de GCC.
Julio
2
Mavericks ya no tiene una base / usr / include. Debe vincularlo en su lugar desde XCode OS 10.9 SDK.
Yann Ramin
3
Por cierto, int mainel primer parámetro es un int y no un int * argc.
p0lAris
3
@ user2615799 Está ensudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include /usr/include
Yann Ramin

Respuestas:

141

Mac OS X

También tuve este problema (encontrado a través de los compiladores de Macports). Las versiones anteriores de Xcode le permitían instalar herramientas de línea de comando a través de xcode / Preferences, pero xcode5 no ofrece una opción de herramientas de línea de comando en la GUI, así que asumí que ahora se incluía automáticamente. Intente ejecutar este comando:

xcode-select --install

Ubuntu

(según esta respuesta )

sudo apt-get install libc6-dev

Linux alpino

(según este comentario )

apk add libc-dev
amos
fuente
Si está utilizando Xcode 6 beta 5, este comando puede fallar. En ese caso, debe hacerlo sudo xcode-select -s /Applications/Xcode.app. Cuando haya terminado, vuelva a usar sudo xcode-select -s /Applications/Xcode6-Beta5.app.
Sjors Provoost
1
Guau. Todavía trabajando con Xcode 8.0 y Sierra en 2017.
user124384
1
La guía alpina es extremadamente útil para imágenes de Docker basadas en distribución alpina, funciona como se desea
VanDavv
alguna sugerencia para los usuarios de Windows? Tengo este problema en Windows
Ratul Hasan
1
Para usuarios de macOS que todavía tienen problemas después de instalar CLTs stackoverflow.com/questions/63342521/…
anki
46

Mac OS Mojave

La respuesta aceptada ya no funciona. Al ejecutar el comando, xcode-select --installle indica que utilice "Actualización de software" para instalar actualizaciones.

En este enlace está el método actualizado:

Abra una Terminal y luego:

cd /Library/Developer/CommandLineTools/Packages/
open macOS_SDK_headers_for_macOS_10.14.pkg

Esto abrirá un asistente de instalación.

Actualización 12/2019

Después de actualizar a Mojave 10.15.1, parece que el uso xcode-select --installfunciona según lo previsto.

Samshel
fuente
La reinstalación de los encabezados también funciona cuando se actualiza a Xcode 10.2.
Bojan Dimovski
Cuando abro macOS_SDK_headers_for_macOS_10.14.pkg, recibo una advertencia aterradora del instalador: "Este paquete es incompatible con esta versión de macOS y es posible que no se instale". Tengo Mojave.
Steve Siegel
@SteveSiegel ¿Qué versión de Mac OS está ejecutando? Actualicé a 10.15.1 y ya no tuve que hacer esta solución. Actualicé mi respuesta para reflejar eso.
Samshel
"actualizando a Mojave 10.15.1" eso es incorrecto. @SteveSiegel El paquete está obsoleto. Se debe utilizar SDKROOT. stackoverflow.com/a/63343829/10063119
anki
23

usuarios de ubuntu:

sudo apt-get install libc6-dev

especialmente los desarrolladores ruby ​​que tienen problemas para instalar gem install json -v '1.8.2'en sus máquinas virtuales

equivalente8
fuente
1
Interesante. Gracias. Esta biblioteca también resuelve algunos otros problemas. Recientemente, lo encontré tratando de ejecutar un punto de referencia para petabyet.com (que usa gcc).
Dhaupin
14
En alpine linux necesitabaapk add libc-dev
shadi
3

Yo tuve el mismo problema. Instalé "XCode: herramientas de desarrollo" de la tienda de aplicaciones y solucionó el problema.

Creo que este enlace ayudará: https://itunes.apple.com/us/app/xcode/id497799835?mt=12&ls=1

Gracias a Yann Ramin por su consejo. Creo que hay una mejor solución con enlaces, pero fue fácil y rápido.

¡Buena suerte!

nevieandphil
fuente
¿Te refieres a Xcode normal? ¿O hay alguna versión especial llamada "XCode: herramientas de desarrollo"? Porque solo veo Xcode normal en la App Store. Por supuesto, esto es 4 años en el futuro desde que se publicó esta respuesta.
user124384
1

Sé que mi caso es raro, pero lo agregaré aquí para alguien que lo solucione más tarde. Tenía un destino de módulo de kernel de Linux en mi Makefile e intenté compilar mi programa de espacio de usuario junto con el módulo de kernel que no tiene stdio. Convertirlo en un objetivo separado resolvió el problema.

Soid
fuente