Recientemente actualicé de Kubuntu 12.04 a 13.04, una reinstalación completa.
Usando gcc 4.7.3. Compilé algunos programas y descubrí que no hay ningún /usr/include/sys
directorio. Es decir, types.h
, stat.h
, etc, están ausentes. Existen en el include/linux
directorio pero no include/sys
.
¿Qué está sucediendo?
Respuesta1
Si usa Ubuntu en 64 bits (no puedo enviar mensajes de texto exactamente en este momento en un sistema de 32 bits), entonces el directorio de la pregunta es:
/usr/include/x86_64-linux-gnu/sys
Ahora, teniendo esta información, puedes crear enlaces simbólicos a esos archivos si realmente los necesitas en esa ubicación ( /usr/include/sys
) usando esto en una terminal:
sudo ln -s /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/sys/types.h
sudo ln -s /usr/include/x86_64-linux-gnu/sys/stat.h /usr/include/sys/stat.h
# ...etc
Respuesta2
Instale libc6-dev-amd64 si está trabajando en un Linux de 64 bits. Escriba el siguiente comando en la terminal de Ubuntu:
sudo apt-get install libc6-dev-amd64
Respuesta3
Comprobemos cuál es la ruta de búsqueda de inclusión predeterminada de gcc. Deesta respuesta, obtenemos este comando:
gcc -xc -E -v -
Al final del resultado, veo esto en mi máquina:
ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../x86_64-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/lib/gcc/x86_64-linux-gnu/4.8/include
/usr/local/include
/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed
/usr/include/x86_64-linux-gnu
/usr/include
Observe la penúltima línea. Eso significa que cuando compilas un archivo C con #include <sys/stat.h>
, gcc buscará /usr/include/x86_64-linux-gnu/sys/stat.h
antes de intentarlo /usr/include/sys/stat.h
, sin que tengamos que vincular nada.
Respuesta4
Como mi arquitectura es AMD64, no existe libc6-dev-amd64
. El paquete a instalar es libc6-dev-i386
.
Eso solucionó la dependencia de un paquete CPAN.