asm / errno.h: Nenhum arquivo ou diretório

6

Estou tentando instalar o gcc 4.8.1 no momento. Atualmente 4.8.2 e 4.9.1 estão instalados. Eu baixei um 4.8.1 aqui link . Depois de extrair os arquivos, fiz um ./configure e depois tentei make . No final de make , recebo este erro

/usr/include/linux/errno.h:1:23: fatal error: asm/errno.h: No such file or directory
 #include <asm/errno.h>

Eu sou novo no Linux, então não sei como encontrar ou adicionar este arquivo de cabeçalho.

Editar: etapas que fiz:

  1. Extraia gcc-4.8.1.tar.gz para uma pasta
  2. Abrir janela do terminal
  3. cd gcc-4.8.1
  4. ./configure --build=x86_64-linux-gnu
  5. make -j4

Eu não sei o que eu fiz diferente, mas finalmente compilado. Depois disso, fiz a instalação. Minha pergunta agora como eu uso isso em vez de 4.8.2 usando o comando gcc-4.8 ainda padroniza.

    
por Meenor 29.09.2014 / 21:31

2 respostas

4

O cabeçalho asm/errno.h é fornecido por uma variedade de pacotes . É estranho que gcc exija, mas você pode tentar:

sudo apt-get install linux-libc-dev

Você também precisa informar ao GCC para procurar uma arquitetura e um local específico do sistema operacional para os cabeçalhos:

../configure --build=x86_64-linux-gnu 

(ou i386-linux-gnu para o Ubuntu de 32 bits).

É altamente recomendável ao criar material da origem que você use --prefix flag (e com o GCC, o --program-suffix flag) durante a configuração. Como você não fez isso, tente executar /usr/bin/gcc .

Assim:

tar xf gcc-4.8.1.tar.gz 
mkdir gcc
cd gcc
../gcc-4.8.1/configure  --build=x86_64-linux-gnu --prefix=/usr/local --program-suffix=-4.8.1
make -j
sudo make install

Agora, seus binários do GCC serão instalados em /usr/local/bin/ e outras coisas em outras pastas em /usr/local .

Por exemplo:

$ /usr/local/bin/gcc-4.8.1  # or simply gcc-4.8.1, since this folder is in your PATH

Observe como estou executando configure e make de um diretório diferente, fora de onde está a origem do GCC? É assim que os documentos do GCC recomendam que o GCC seja criado.

    
por muru 29.09.2014 / 21:35
3

Eu recebi o mesmo erro em ubuntu-xenial 4.4.0-75-generic .

Descobri que tinha uma pasta /usr/include/asm-generic , mas não /usr/include/asm , que o gcc estava procurando.

A criação de um link simbólico resolveu isso para mim.

sudo ln -s /usr/include/asm-generic/ /usr/include/asm

Aviso justo : Embora, às vezes, alguém tenha que fazer esse tipo de truque, nem sempre é uma boa ideia só porque funciona. Estou fazendo isso em uma máquina virtual, que posso recriar executando um script simples, e é por isso que não é grande coisa se eu quebrar alguma coisa.

    
por Nicolai S 14.05.2017 / 20:02