J'essaie d'installer Nachos sur mon ordinateur portable et j'ai Ubuntu 11.04 sur l'ordinateur portable.
Le code est en C et donc pour le construire, je suppose que j'aurai besoin d'un compilateur croisé. C'est là que se situe mon problème. J'ai téléchargé le code source du compilateur croisé MIPS en utilisant la commande
wget http://mll.csie.ntu.edu.tw/course/os_f08/assignment/mips-decstation.linux-xgcc.gz
et je l'ai décompressé en utilisant
tar zxvf mips-decstation.linux-xgcc.gz
C'est correct, mais quand j'essaye de construire le code source du système d'exploitation nachos, en utilisant make, j'obtiens cette erreur -
/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
J'essaie de suivre les instructions données ici - http://mll.csie.ntu.edu.tw/course/os_f08/217.htm et tout fonctionne bien sauf lorsque j'essaye d'utiliser make.
Réponses:
Il vous manque le package de développement libc 32 bits:
Sur Ubuntu, il s'appelle libc6-dev-i386 - do
sudo apt-get install libc6-dev-i386
. Voir ci-dessous pour des instructions supplémentaires pour Ubuntu 12.04.Sur les distributions Red Hat , le nom du paquet est
glibc-devel.i686
(Merci au commentaire de David Gardner).Sur CentOS 5.8 , le nom du package est
glibc-devel.i386
(Merci au commentaire de JimKleck).Sur CentOS 6/7 , le nom du package est
glibc-devel.i686
.Sur SLES, il s'appelle glibc-devel-32bit - do
zypper in glibc-devel-32bit
.Sur Gentoo, il s'appelle
sys-libs/glibc
- doemerge -1a sys-libs/gcc
[ source ] (Remarque: on peut utiliserequery
pour confirmer que c'est correct; faireequery belongs belongs /usr/include/gnu/stubs-32.h
)Sur ArchLinux , le nom du package est
lib32-glibc
- dopacman -S lib32-glibc
.Utilisez-vous Ubuntu 12.04 ? Il existe un problème connu qui place les fichiers dans un emplacement non standard . Vous devrez également faire:
quelque part avant de construire (disons dans votre .bashrc).
Si vous compilez également du code C ++, vous aurez également besoin de la bibliothèque stdc ++ 32 bits. Si vous voyez cet avertissement:
Sur Ubuntu, vous devrez faire
sudo apt-get install g++-multilib
Sur CentOS 5, vous devrez faire
yum install libstdc++-devel.i386
Sur CentOS 6, vous devrez faire
yum install libstdc++-devel.i686
N'hésitez pas à modifier les packages pour d'autres systèmes.
la source
libc-dev-amd64
. Ma faute.sudo apt-get install g++-multilib
Sur le site Web de GNU UPC :
la source
--disable-multilib
partieEssayez de faire un
sudo apt-get install libc6-dev
.apt-file
me dit que le fichier en question appartient à ce package.la source
Ceci est maintenant dans la FAQ du wiki GCC, voir http://gcc.gnu.org/wiki/FAQ#gnu_stubs-32.h
la source
J'obtenais l'erreur suivante sur une boîte fedora 18:
1. /usr/include/gnu/stubs.h:7:27: erreur fatale: gnu / stubs-32.h: aucune compilation de ce type de fichier ou de répertoire n'est terminée.
J'ai installé glibc.i686 et glibc-devel.i686, puis la compilation a échoué avec l'erreur suivante:
2. / usr / bin / ld: ignorer l'incompatible /usr/lib/gcc/x86_64-redhat-linux/4.7.2/libgcc_s.so lors de la recherche de -lgcc_s / usr / bin / ld: impossible de trouver -lgcc_s collect2: erreur : ld a renvoyé 1 statut de sortie
Solution:
J'ai installé (yum install) glibc.i686 glibc-devel.i386 et libgcc.i686 pour se débarrasser du problème de compilation.
Maintenant, la compilation pour 32 bits (-m32) fonctionne correctement.
la source
Eh bien, je suis sur ubuntu 12.04 et j'ai eu cette même erreur en essayant de compiler gcc 4.7.2
J'ai essayé d'installer le
libc6-dev-i386
package et j'ai obtenu ce qui suit:J'ai également défini les bonnes variables d'environnement dans bash:
cependant, j'obtenais toujours l'erreur, puis j'ai simplement copié
stubs-32.h
là où gcc s'attendait à le trouver après avoir fait une comparaison rapide:Il est en train de compiler maintenant, voyons s'il se plaint plus ...
la source
FWIW, cela sent comme une erreur (ou au moins une source potentielle de douleur future) d'utiliser des fichiers de / usr / include lors de la compilation croisée.
la source
gnu/stubs-32.h
n'est pas dirigé inclus dans les programmes. C'est un fichier d'en-tête de type back-end degnu/stubs.h
, tout commegnu/stubs-64.h
. Vous pouvez installer lemultilib
package pour ajouter les deux.la source
# sudo apt-get install g ++ - multilib
Devrait corriger cette erreur sur les machines 64 bits (Debian / Ubuntu).
la source
Si vous rencontrez ce problème dans le terminal Mac-OSX avec python, essayez de mettre à jour les versions des packages que vous utilisez. Alors, allez dans vos fichiers en python et là où vous avez spécifié les packages, mettez-les à jour avec les dernières versions disponibles sur Internet.
la source
Sur l'utilisation de Debian / Ubuntu:
sudo apt-get install g++-multilib libc6-dev-i386
la source