Estoy tratando de instalar Nachos en mi computadora portátil y tengo Ubuntu 11.04 en la computadora portátil.
El código está en C y, por lo tanto, para construirlo, supongo que necesitaré un compilador cruzado. Aquí es donde está mi problema. Descargué el código fuente del compilador cruzado MIPS usando el comando
wget http://mll.csie.ntu.edu.tw/course/os_f08/assignment/mips-decstation.linux-xgcc.gz
y lo descomprimí usando
tar zxvf mips-decstation.linux-xgcc.gz
Esto está bien, pero cuando trato de construir el código fuente de los nachos os, usando make, aparece este error:
/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
Estoy tratando de seguir las instrucciones dadas aquí: http://mll.csie.ntu.edu.tw/course/os_f08/217.htm y todo funciona bien, excepto cuando trato de usar make.
Respuestas:
Te falta el paquete de desarrollo de libc de 32 bits:
En Ubuntu se llama libc6-dev-i386 - do
sudo apt-get install libc6-dev-i386
. Consulte a continuación las instrucciones adicionales para Ubuntu 12.04.En las distribuciones de Red Hat , el nombre del paquete es
glibc-devel.i686
(Gracias al comentario de David Gardner).En CentOS 5.8 , el nombre del paquete es
glibc-devel.i386
(Gracias al comentario de JimKleck).En CentOS 6/7 , el nombre del paquete es
glibc-devel.i686
.En SLES se llama glibc-devel-32bit - do
zypper in glibc-devel-32bit
.En Gentoo se llama
sys-libs/glibc
- doemerge -1a sys-libs/gcc
[ fuente ] (Nota: se puede usarequery
para confirmar que esto es correcto; hacerequery belongs belongs /usr/include/gnu/stubs-32.h
)En ArchLinux , el nombre del paquete es
lib32-glibc
- dopacman -S lib32-glibc
.¿Estás usando Ubuntu 12.04 ? Existe un problema conocido que coloca los archivos en una ubicación no estándar . Usted también tiene que hacer:
en algún lugar antes de construir (digamos en su .bashrc).
Si también está compilando código C ++, también necesitará la biblioteca stdc ++ de 32 bits. Si ves esta advertencia:
En Ubuntu deberás hacer
sudo apt-get install g++-multilib
En CentOS 5 deberás hacer
yum install libstdc++-devel.i386
En CentOS 6 deberás hacer
yum install libstdc++-devel.i686
Por favor, siéntase libre de editar en los paquetes para otros sistemas.
fuente
libc-dev-amd64
. Culpa mía.sudo apt-get install g++-multilib
Desde el sitio web de GNU UPC :
fuente
--disable-multilib
parteIntenta hacer un
sudo apt-get install libc6-dev
.apt-file
me dice que el archivo en cuestión pertenece a ese paquete.fuente
Esto está ahora en las preguntas frecuentes de la wiki de GCC, consulte http://gcc.gnu.org/wiki/FAQ#gnu_stubs-32.h
fuente
Estaba recibiendo el siguiente error en una caja de fedora 18:
1. /usr/include/gnu/stubs.h:7:27: error fatal: gnu / stubs-32.h: No finalizó la compilación de dicho archivo o directorio.
Instalé glibc.i686 y glibc-devel.i686, luego la compilación falló con el siguiente error:
2. / usr / bin / ld: omitiendo incompatible /usr/lib/gcc/x86_64-redhat-linux/4.7.2/libgcc_s.so al buscar -lgcc_s / usr / bin / ld: no se puede encontrar -lgcc_s collect2: error : LD devolvió el código de salida 1
Solución:
Instalé (yum install) glibc.i686 glibc-devel.i386 y libgcc.i686 para deshacerme del problema de compilación.
Ahora la compilación para 32 bits (-m32) funciona bien.
fuente
Hmm, bueno, estoy en Ubuntu 12.04 y obtuve este mismo error al intentar compilar gcc 4.7.2
Intenté instalar el
libc6-dev-i386
paquete y obtuve lo siguiente:También configuré las variables de entorno correctas en bash:
sin embargo, todavía recibía el error y luego simplemente copié
stubs-32.h
donde gcc esperaba encontrarlo después de hacer una rápida diferencia:Se está compilando ahora, veamos si se queja más ...
fuente
FWIW, huele a un error (o al menos una fuente potencial de dolor futuro) al usar archivos de / usr / include cuando se realiza una compilación cruzada.
fuente
gnu/stubs-32.h
no está dirigido incluido en los programas. Es un archivo de encabezado de tipo back-end degnu/stubs.h
, al igual quegnu/stubs-64.h
. Puede instalar elmultilib
paquete para agregar ambos.fuente
# sudo apt-get install g ++ - multilib
Debería solucionar este error en máquinas de 64 bits (Debian / Ubuntu).
fuente
Si enfrenta este problema en el terminal Mac-OSX con python, intente actualizar las versiones de los paquetes que está utilizando. Entonces, vaya a sus archivos en Python y donde especificó los paquetes, actualícelos a las últimas versiones disponibles en Internet.
fuente
En el uso de Debian / Ubuntu:
sudo apt-get install g++-multilib libc6-dev-i386
fuente