Estou tentando instalar o Nachos no meu laptop e tenho o Ubuntu 11.04 no laptop.
O código está em C e, para construí-lo, presumo que precisarei de compilador cruzado. É aqui que está o meu problema. Eu baixei o código-fonte do MIPS Cross Compiler usando o comando
wget http://mll.csie.ntu.edu.tw/course/os_f08/assignment/mips-decstation.linux-xgcc.gz
e eu descompactei-o usando
tar zxvf mips-decstation.linux-xgcc.gz
Tudo bem, mas quando tento criar o código fonte do nachos os, usando make, recebo este erro -
/usr/include/gnu/stubs.h:7:27: fatal error: gnu/stubs-32.h: No such file or directory compilation terminated. make: *** [bitmap.o] Error 1
Estou tentando seguir as instruções fornecidas aqui - http://mll.csie.ntu.edu.tw/course/os_f08/217.htm e tudo está funcionando bem, exceto quando tento usar o make.
Respostas:
Está faltando o pacote libc dev de 32 bits:
No Ubuntu , é chamado libc6-dev-i386 - do
sudo apt-get install libc6-dev-i386
. Veja abaixo instruções adicionais para o Ubuntu 12.04.Nas distribuições da Red Hat , o nome do pacote é
glibc-devel.i686
(Graças ao comentário de David Gardner).No CentOS 5.8 , o nome do pacote é
glibc-devel.i386
(Graças ao comentário de JimKleck).No CentOS 6/7 , o nome do pacote é
glibc-devel.i686
.No SLES , é chamado glibc-devel-32bit - do
zypper in glibc-devel-32bit
.No Gentoo é chamado
sys-libs/glibc
- doemerge -1a sys-libs/gcc
[ source ] (Nota: pode-se usarequery
para confirmar que isso está correto; doequery belongs belongs /usr/include/gnu/stubs-32.h
)No ArchLinux , o nome do pacote é
lib32-glibc
- dopacman -S lib32-glibc
.Você está usando o Ubuntu 12.04 ? Há um problema conhecido que coloca os arquivos em um local não padrão . Você também precisará fazer:
em algum lugar antes de criar (por exemplo, no seu .bashrc).
Se você também estiver compilando código C ++, também precisará da biblioteca stdc ++ de 32 bits. Se você vir este aviso:
No Ubuntu, você precisará fazer
sudo apt-get install g++-multilib
No CentOS 5, você precisará fazer
yum install libstdc++-devel.i386
No CentOS 6, você precisará fazer
yum install libstdc++-devel.i686
Por favor, sinta-se livre para editar os pacotes para outros sistemas.
fonte
libc-dev-amd64
. Foi mal.sudo apt-get install g++-multilib
No site da GNU UPC :
fonte
--disable-multilib
parteTente fazer um
sudo apt-get install libc6-dev
.apt-file
informa que o arquivo em questão pertence a esse pacote.fonte
Agora, isso está nas Perguntas frequentes do wiki do GCC, consulte http://gcc.gnu.org/wiki/FAQ#gnu_stubs-32.h
fonte
Eu estava recebendo o seguinte erro em uma caixa do fedora 18:
1. /usr/include/gnu/stubs.h:7:27: erro fatal: gnu / stubs-32.h: Nenhuma compilação de arquivo ou diretório foi encerrada.
Eu instalei glibc.i686 e glibc-devel.i686 e a compilação falhou com o seguinte erro:
2. / usr / bin / ld: ignorando /usr/lib/gcc/x86_64-redhat-linux/4.7.2/libgcc_s.so incompatível ao procurar por -lgcc_s / usr / bin / ld: não é possível encontrar -lgcc_s collect2: erro : ld retornou 1 status de saída
Solução:
Eu instalei (yum install) glibc.i686 glibc-devel.i386 e libgcc.i686 para livrar-se do problema de compilação.
Agora a compilação para 32 bits (-m32) funciona bem.
fonte
Hmm, estou no ubuntu 12.04 e recebi o mesmo erro ao tentar compilar o gcc 4.7.2
Tentei instalar o
libc6-dev-i386
pacote e obtive o seguinte:Também defino as variáveis de ambiente corretas no bash:
no entanto, eu ainda estava recebendo o erro e simplesmente copiei
stubs-32.h
para onde o gcc esperava encontrá-lo depois de fazer uma rápida comparação:Está compilando agora, vamos ver se reclama mais ...
fonte
FWIW, parece um erro (ou pelo menos uma fonte potencial de dor futura) ao usar arquivos de / usr / include ao fazer a compilação cruzada.
fonte
gnu/stubs-32.h
não é direcionado incluído nos programas. É um arquivo de cabeçalho do tipo back-endgnu/stubs.h
, exatamente comognu/stubs-64.h
. Você pode instalar omultilib
pacote para adicionar ambos.fonte
# sudo apt-get install g ++ - multilib
Deve corrigir esse erro em máquinas de 64 bits (Debian / Ubuntu).
fonte
Se você está enfrentando esse problema no terminal Mac-OSX com python, tente atualizar as versões dos pacotes que você está usando. Portanto, acesse seus arquivos em python e, onde você especificou os pacotes, atualize-os para as versões mais recentes disponíveis na Internet.
fonte
No Debian / Ubuntu, use:
sudo apt-get install g++-multilib libc6-dev-i386
fonte