Ich versuche Nachos auf meinem Laptop zu installieren und habe Ubuntu 11.04 auf dem Laptop.
Der Code ist in C und um ihn zu erstellen, gehe ich davon aus, dass ich einen Cross-Compiler benötige. Hier liegt mein Problem. Ich habe den Quellcode des MIPS-Cross-Compilers mit dem Befehl heruntergeladen
wget http://mll.csie.ntu.edu.tw/course/os_f08/assignment/mips-decstation.linux-xgcc.gz
und ich habe es mit entpackt
tar zxvf mips-decstation.linux-xgcc.gz
Das ist in Ordnung, aber wenn ich versuche, den Quellcode des Nachos OS mit make zu erstellen, erhalte ich diesen Fehler -
/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
Ich versuche, den hier gegebenen Anweisungen zu folgen - http://mll.csie.ntu.edu.tw/course/os_f08/217.htm und alles funktioniert einwandfrei, außer wenn ich versuche, make zu verwenden.
Antworten:
Sie vermissen das 32-Bit-libc-Entwicklungspaket:
Unter Ubuntu heißt es libc6-dev-i386 - do
sudo apt-get install libc6-dev-i386
. Weitere Anweisungen für Ubuntu 12.04 finden Sie weiter unten.In Red Hat- Distributionen lautet der Paketname
glibc-devel.i686
(Dank an David Gardners Kommentar).Unter CentOS 5.8 lautet der Paketname
glibc-devel.i386
(dank JimKlecks Kommentar).Unter CentOS 6/7 lautet der Paketname
glibc-devel.i686
.Auf SLES heißt es glibc-devel-32bit - do
zypper in glibc-devel-32bit
.Auf Gentoo heißt es
sys-libs/glibc
- doemerge -1a sys-libs/gcc
[ Quelle ] (Hinweis: Man kann verwendenequery
, um zu bestätigen, dass dies korrekt ist; doequery belongs belongs /usr/include/gnu/stubs-32.h
)Unter ArchLinux lautet der Paketname
lib32-glibc
- dopacman -S lib32-glibc
.Verwenden Sie Ubuntu 12.04 ? Es ist ein Problem bekannt, bei dem die Dateien an einem nicht standardmäßigen Speicherort abgelegt werden . Sie werden auch tun müssen:
irgendwo vor dem Erstellen (etwa in Ihrer .bashrc).
Wenn Sie auch C ++ - Code kompilieren, benötigen Sie auch die 32-Bit-stdc ++ - Bibliothek. Wenn Sie diese Warnung sehen:
Unter Ubuntu müssen Sie dies tun
sudo apt-get install g++-multilib
Unter CentOS 5 müssen Sie dies tun
yum install libstdc++-devel.i386
Unter CentOS 6 müssen Sie dies tun
yum install libstdc++-devel.i686
Bitte zögern Sie nicht, die Pakete für andere Systeme zu bearbeiten.
quelle
libc-dev-amd64
. Mein Fehler.sudo apt-get install g++-multilib
Von der GNU UPC-Website :
quelle
--disable-multilib
TeilVersuchen Sie es mit einem
sudo apt-get install libc6-dev
.apt-file
sagt mir, dass die fragliche Datei zu diesem Paket gehört.quelle
Dies finden Sie jetzt in den häufig gestellten Fragen zum GCC-Wiki (siehe http://gcc.gnu.org/wiki/FAQ#gnu_stubs-32.h)
quelle
Ich habe folgenden Fehler auf einer Fedora 18-Box erhalten:
1. /usr/include/gnu/stubs.h:7:27: Schwerwiegender Fehler: gnu / stubs-32.h: Keine solche Datei- oder Verzeichniskompilierung wurde beendet.
Ich habe glibc.i686 und glibc-devel.i686 installiert, dann ist die Kompilierung mit folgendem Fehler fehlgeschlagen:
2. / usr / bin / ld: Inkompatibel überspringen /usr/lib/gcc/x86_64-redhat-linux/4.7.2/libgcc_s.so bei der Suche nach -lgcc_s / usr / bin / ld: -lgcc_s collect2: Fehler kann nicht gefunden werden : ld hat 1 Exit-Status zurückgegeben
Lösung:
Ich habe glibc.i686 glibc-devel.i386 und libgcc.i686 installiert (yum install), um das Kompilierungsproblem zu beseitigen.
Jetzt funktioniert die Kompilierung für 32 Bit (-m32) einwandfrei.
quelle
Hmm, ich bin auf Ubuntu 12.04 und habe den gleichen Fehler beim Versuch, gcc 4.7.2 zu kompilieren
Ich habe versucht, das
libc6-dev-i386
Paket zu installieren und habe Folgendes erhalten:Ich habe auch die richtigen Umgebungsvariablen in bash festgelegt:
Ich bekam jedoch immer noch den Fehler, dann kopierte ich einfach dorthin
stubs-32.h
, wo gcc ihn nach einem kurzen Diff erwartet hatte:Es wird jetzt kompiliert, mal sehen, ob es sich mehr beschwert ...
quelle
FWIW, es riecht nach einem Fehler (oder zumindest einer potenziellen Quelle zukünftiger Schmerzen), Dateien aus / usr / include beim Cross-Compilieren zu verwenden.
quelle
gnu/stubs-32.h
ist nicht in Programmen enthalten. Es ist eine Back-End-Header-Datei vongnu/stubs.h
, genau wiegnu/stubs-64.h
. Sie können dasmultilib
Paket installieren , um beide hinzuzufügen.quelle
# sudo apt-get install g ++ - Multilib
Sollte diesen Fehler auf 64-Bit-Computern (Debian / Ubuntu) beheben.
quelle
Wenn dieses Problem im Mac-OSX-Terminal mit Python auftritt, aktualisieren Sie die Versionen der von Ihnen verwendeten Pakete. Gehen Sie also zu Ihren Dateien in Python und aktualisieren Sie sie dort, wo Sie die Pakete angegeben haben, auf die neuesten Versionen, die im Internet verfügbar sind.
quelle
Unter Debian / Ubuntu verwenden Sie:
sudo apt-get install g++-multilib libc6-dev-i386
quelle