Onde está meu diretório /usr/include/sys?

Onde está meu diretório /usr/include/sys?

Recentemente atualizei do Kubuntu 12.04 para 13.04, uma reinstalação completa.

Usando gcc 4.7.3. Compilei alguns programas para descobrir que não existe /usr/include/sysdiretório. Ou seja, types.h, stat.h, etc, estão ausentes. Eles existem no include/linuxdiretório, mas não include/sys.

O que está acontecendo?

Responder1

Se você usa o Ubuntu em 64 bits (não consigo enviar mensagens de texto exatamente agora em um sistema de 32 bits), o diretório da pergunta é:

/usr/include/x86_64-linux-gnu/sys

Agora, com essas informações, você pode criar links simbólicos para esses arquivos se realmente precisar deles naquele local ( /usr/include/sys) usando isto em um 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

Responder2

instale libc6-dev-amd64 se você estiver trabalhando em um Linux de 64 bits. Digite o seguinte comando no terminal do Ubuntu:

sudo apt-get install libc6-dev-amd64

Responder3

Vamos verificar qual é o caminho de pesquisa de inclusão padrão do gcc. Deesta resposta, obtemos este comando:

gcc -xc -E -v -

No final da saída, vejo isto na minha 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 a penúltima linha. Isso significa que quando você compila um arquivo C com #include <sys/stat.h>, o gcc irá procurar /usr/include/x86_64-linux-gnu/sys/stat.hantes de tentar /usr/include/sys/stat.h, sem que tenhamos que criar um link simbólico para nada.

Responder4

Como minha arquitetura é amd64, não existe libc6-dev-amd64. O pacote a ser instalado é o libc6-dev-i386.

Isso corrigiu a dependência de um pacote CPAN.

informação relacionada