我正在尝试在我的笔记本电脑上安装 Nachos,我在笔记本电脑上安装了 Ubuntu 11.04。
代码在 C 中,所以要构建它,我假设我需要交叉编译器。这就是我的问题所在。我使用命令下载了 MIPS 交叉编译器的源代码
wget http://mll.csie.ntu.edu.tw/course/os_f08/assignment/mips-decstation.linux-xgcc.gz
我用
tar zxvf mips-decstation.linux-xgcc.gz
没关系,但是当我尝试使用 make 构建 nachos 操作系统的源代码时,我收到了这个错误 -
/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
我正在尝试按照此处给出的说明进行操作 - http://mll.csie.ntu.edu.tw/course/os_f08/217.htm并且除了我尝试使用 make 之外一切正常。
您缺少 32 位 libc 开发包:
在 Ubuntu 上,它被称为 libc6-dev-i386 - do sudo apt-get install libc6-dev-i386。有关 Ubuntu 12.04 的额外说明,请参见下文。
sudo apt-get install libc6-dev-i386
在 Red Hat 发行版上,软件包名称是glibc-devel.i686(感谢 David Gardner 的评论)。
glibc-devel.i686
在 CentOS 5.8 上,软件包名称是glibc-devel.i386(感谢 JimKleck 的评论)。
glibc-devel.i386
在 CentOS 6 / 7 上,软件包名称是glibc-devel.i686.
在 SLES 上,它被称为 glibc-devel-32bit -do zypper in glibc-devel-32bit。
zypper in glibc-devel-32bit
在 Gentoo 上,它被称为sys-libs/glibc-do emerge -1a sys-libs/gcc [ source ](注意:可以equery用来确认这是正确的;do equery belongs belongs /usr/include/gnu/stubs-32.h)
sys-libs/glibc
emerge -1a sys-libs/gcc
equery
equery belongs belongs /usr/include/gnu/stubs-32.h
在 ArchLinux 上,包名是lib32-glibc-do pacman -S lib32-glibc。
lib32-glibc
pacman -S lib32-glibc
您使用的是 Ubuntu 12.04 吗?将文件放在非标准位置存在一个已知问题。您还需要执行以下操作:
export LIBRARY_PATH=/usr/lib/$(gcc -print-multiarch) export C_INCLUDE_PATH=/usr/include/$(gcc -print-multiarch) export CPLUS_INCLUDE_PATH=/usr/include/$(gcc -print-multiarch)
在你构建之前的某个地方(比如在你的 .bashrc 中)。
如果您还要编译 C 代码,则还需要 32 位 stdc 库。如果您看到此警告:
.... /usr/bin/ld: 找不到 -lstdc++ ....
在 Ubuntu 上 ,你需要做 sudo apt-get install g++-multilib
sudo apt-get install g++-multilib
在 CentOS 5 上你需要做yum install libstdc++-devel.i386
yum install libstdc++-devel.i386
在 CentOS 6 上你需要做yum install libstdc++-devel.i686
yum install libstdc++-devel.i686
请随时在其他系统的软件包中进行编辑。