Saya mencoba menginstal Nachos di laptop saya dan Ubuntu 11,04 di laptop.
Kode dalam C dan untuk membangunnya saya berasumsi saya akan memerlukan kompiler silang. Di sinilah masalah saya. Saya mengunduh kode sumber MIPS compiler lintas menggunakan perintah
wget http://mll.csie.ntu.edu.tw/course/os_f08/assignment/mips-decstation.linux-xgcc.gz
dan saya membuka ritsletingnya menggunakan
tar zxvf mips-decstation.linux-xgcc.gz
Ini tidak apa-apa, tetapi ketika saya mencoba untuk membangun kode sumber dari nachos os, menggunakan make, saya mendapatkan kesalahan ini -
/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
Saya mencoba mengikuti instruksi yang diberikan di sini - http://mll.csie.ntu.edu.tw/course/os_f08/217.htm dan semuanya bekerja dengan baik kecuali ketika saya mencoba menggunakan make.
Jawaban:
Anda melewatkan paket dev 32 libc dev:
Di Ubuntu disebut libc6-dev-i386 - do
sudo apt-get install libc6-dev-i386
. Lihat di bawah untuk instruksi tambahan untuk Ubuntu 12.04.Di distro Red Hat , nama paketnya adalah
glibc-devel.i686
(Terima kasih atas komentar David Gardner).Pada CentOS 5.8 , nama paketnya adalah
glibc-devel.i386
(Terima kasih atas komentar JimKleck).Pada CentOS 6/7 , nama paketnya adalah
glibc-devel.i686
.Pada SLES itu disebut glibc-devel-32bit - do
zypper in glibc-devel-32bit
.Di Gentoo disebut
sys-libs/glibc
- doemerge -1a sys-libs/gcc
[ sumber ] (Catatan: Seseorang dapat menggunakanequery
untuk mengkonfirmasi ini benar; lakukanequery belongs belongs /usr/include/gnu/stubs-32.h
)Di ArchLinux , nama paketnya adalah
lib32-glibc
- dopacman -S lib32-glibc
.Apakah Anda menggunakan Ubuntu 12,04 ? Ada masalah yang diketahui yang menempatkan file di lokasi yang tidak standar . Anda juga harus melakukan:
suatu tempat sebelum Anda membangun (katakanlah di .bashrc Anda).
Jika Anda juga mengkompilasi kode C ++, Anda juga memerlukan pustaka stdc ++ 32 bit. Jika Anda melihat peringatan ini:
Di Ubuntu Anda perlu melakukannya
sudo apt-get install g++-multilib
Pada CentOS 5 Anda harus melakukannya
yum install libstdc++-devel.i386
Pada CentOS 6 Anda harus melakukannya
yum install libstdc++-devel.i686
Silakan mengedit dalam paket untuk sistem lain.
sumber
libc-dev-amd64
. Salahku.sudo apt-get install g++-multilib
Dari situs web GNU UPC :
sumber
--disable-multilib
bagianCoba lakukan a
sudo apt-get install libc6-dev
.apt-file
memberitahu saya bahwa file tersebut milik paket itu.sumber
Ini sekarang di FAQ wiki GCC, lihat http://gcc.gnu.org/wiki/FAQ#gnu_stubs-32.h
sumber
Saya mendapatkan kesalahan berikut pada kotak fedora 18:
1. /usr/include/gnu/stubs.h:7:27: kesalahan fatal: gnu / stubs-32.h: Tidak ada kompilasi file atau direktori yang dihentikan.
Saya telah menginstal glibc.i686 dan glibc-devel.i686, kemudian kompilasi gagal dengan kesalahan berikut:
2. / usr / bin / ld: melewatkan yang tidak kompatibel /usr/lib/gcc/x86_64-redhat-linux/4.7.2/libgcc_s.so saat mencari -lgcc_s / usr / bin / ld: tidak dapat menemukan -lgcc_s collect2: error : ld mengembalikan 1 status keluar
Larutan:
Saya menginstal (yum install) glibc.i686 glibc-devel.i386 dan libgcc.i686 untuk menyingkirkan masalah kompilasi.
Sekarang kompilasi untuk 32 bit (-m32) berfungsi dengan baik.
sumber
Hmm ya saya di ubuntu 12.04 dan saya mendapat kesalahan yang sama ketika mencoba untuk mengkompilasi gcc 4.7.2
Saya mencoba menginstal
libc6-dev-i386
paket dan mendapatkan yang berikut:Saya juga mengatur variabel lingkungan yang benar di bash:
Namun, saya masih mendapatkan kesalahan kemudian saya cukup menyalin
stubs-32.h
ke tempat gcc mengharapkan menemukannya setelah melakukan diff cepat:Itu sedang dikompilasi sekarang, mari kita lihat apakah ia mengeluh lebih ...
sumber
FWIW, baunya seperti kesalahan (atau setidaknya sumber potensi rasa sakit di masa depan) untuk menggunakan file dari / usr / termasuk ketika kompilasi silang.
sumber
gnu/stubs-32.h
tidak diarahkan termasuk dalam program. Ini adalah file header jenis back-endgnu/stubs.h
, sama sepertignu/stubs-64.h
. Anda dapat menginstalmultilib
paket untuk menambahkan keduanya.sumber
# sudo apt-get install g ++ - multilib
Haruskah memperbaiki kesalahan ini pada mesin 64-bit (Debian / Ubuntu).
sumber
Jika Anda menghadapi masalah ini di terminal Mac-OSX dengan python, coba perbarui versi paket yang Anda gunakan. Jadi, buka file Anda dengan python dan di mana Anda menentukan paket, perbarui paket itu ke versi terbaru yang tersedia di internet.
sumber
Tentang penggunaan Debian / Ubuntu:
sudo apt-get install g++-multilib libc6-dev-i386
sumber