Próbuję zainstalować Nachos na moim laptopie i mam na nim Ubuntu 11.04.
Kod jest w C, więc aby go zbudować, zakładam, że będę potrzebował kompilatora krzyżowego. Tu jest mój problem. Pobrałem kod źródłowy kompilatora krzyżowego MIPS za pomocą polecenia
wget http://mll.csie.ntu.edu.tw/course/os_f08/assignment/mips-decstation.linux-xgcc.gz
i rozpakowałem go za pomocą
tar zxvf mips-decstation.linux-xgcc.gz
To jest w porządku, ale kiedy próbuję zbudować kod źródłowy nachos os przy użyciu make, pojawia się ten błąd -
/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
Próbuję postępować zgodnie z instrukcjami podanymi tutaj - http://mll.csie.ntu.edu.tw/course/os_f08/217.htm i wszystko działa dobrze, z wyjątkiem sytuacji, gdy próbuję użyć make.
Odpowiedzi:
Brakuje 32-bitowego pakietu libc dev:
W Ubuntu nazywa się libc6-dev-i386 - zrób
sudo apt-get install libc6-dev-i386
. Poniżej znajdują się dodatkowe instrukcje dotyczące Ubuntu 12.04.W dystrybucjach Red Hat nazwa pakietu to
glibc-devel.i686
(dzięki komentarzowi Davida Gardnera).W CentOS 5.8 nazwa pakietu to
glibc-devel.i386
(dzięki komentarzowi JimKlecka).W CentOS 6/7 nazwa pakietu to
glibc-devel.i686
.W SLES nazywa się to glibc-devel-32bit - do
zypper in glibc-devel-32bit
.W Gentoo nazywa się
sys-libs/glibc
- wykonajemerge -1a sys-libs/gcc
[ źródło ] (Uwaga: można użyć,equery
aby potwierdzić, że jest to poprawne; zróbequery belongs belongs /usr/include/gnu/stubs-32.h
)W ArchLinux nazwa pakietu to
lib32-glibc
- dopacman -S lib32-glibc
.Czy używasz Ubuntu 12.04 ? Istnieje znany problem, który powoduje umieszczenie plików w niestandardowej lokalizacji . Musisz także :
gdzieś przed budowaniem (powiedzmy w swoim .bashrc).
Jeśli kompilujesz również kod w C ++, będziesz potrzebować 32-bitowej biblioteki stdc ++. Jeśli zobaczysz to ostrzeżenie:
W Ubuntu musisz to zrobić
sudo apt-get install g++-multilib
Na CentOS 5 musisz to zrobić
yum install libstdc++-devel.i386
W CentOS 6 musisz to zrobić
yum install libstdc++-devel.i686
Zapraszamy do edycji w pakietach dla innych systemów.
źródło
libc-dev-amd64
. Mój błąd.sudo apt-get install g++-multilib
Ze strony GNU UPC :
źródło
--disable-multilib
częśćSpróbuj zrobić
sudo apt-get install libc6-dev
.apt-file
informuje, że dany plik należy do tego pakietu.źródło
To jest teraz w FAQ wiki GCC, zobacz http://gcc.gnu.org/wiki/FAQ#gnu_stubs-32.h
źródło
Otrzymałem następujący błąd na pudełku Fedory 18:
1. /usr/include/gnu/stubs.h:7:27: błąd krytyczny: gnu / stubs-32.h: Kompilacja takiego pliku lub katalogu nie została zakończona.
Zainstalowałem glibc.i686 i glibc-devel.i686, następnie kompilacja nie powiodła się i wystąpił następujący błąd:
2. / usr / bin / ld: pomijanie niezgodnych /usr/lib/gcc/x86_64-redhat-linux/4.7.2/libgcc_s.so podczas wyszukiwania -lgcc_s / usr / bin / ld: nie można znaleźć -lgcc_s collect2: błąd : ld zwrócił 1 kod wyjścia
Rozwiązanie:
Zainstalowałem (yum install) glibc.i686 glibc-devel.i386 i libgcc.i686, aby pozbyć się problemu z kompilacją.
Teraz kompilacja dla wersji 32-bitowej (-m32) działa dobrze.
źródło
Hmm cóż, jestem na Ubuntu 12.04 i mam ten sam błąd podczas próby kompilacji gcc 4.7.2
Próbowałem zainstalować
libc6-dev-i386
pakiet i otrzymałem następujące informacje:Ustawiłem również poprawne zmienne środowiskowe w bash:
jednak nadal otrzymywałem błąd, a następnie po prostu skopiowałem
stubs-32.h
do miejsca, w którym gcc spodziewało się go znaleźć po wykonaniu szybkiego porównania:Kompiluje się teraz, zobaczmy, czy narzeka bardziej ...
źródło
FWIW, używanie plików z / usr / include podczas kompilacji krzyżowej pachnie błędem (lub przynajmniej potencjalnym źródłem przyszłego bólu).
źródło
gnu/stubs-32.h
nie jest skierowany do programów. Jest to typ pliku nagłówka back-end zgnu/stubs.h
, podobnie jakgnu/stubs-64.h
. Możesz zainstalowaćmultilib
pakiet, aby dodać oba.źródło
# sudo apt-get install g ++ - multilib
Powinien naprawić ten błąd na maszynach 64-bitowych (Debian / Ubuntu).
źródło
Jeśli napotykasz ten problem w terminalu Mac-OSX z pythonem, spróbuj zaktualizować wersje używanych pakietów. Więc przejdź do swoich plików w Pythonie i tam, gdzie określiłeś pakiety, zaktualizuj je do najnowszych wersji dostępnych w Internecie.
źródło
W systemie Debian / Ubuntu:
sudo apt-get install g++-multilib libc6-dev-i386
źródło