小编典典

编译 Nachos 源代码时出现错误“gnu/stubs-32.h: No such file or directory”

all

我正在尝试在我的笔记本电脑上安装 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 之外一切正常。


阅读 77

收藏
2022-08-01

共1个答案

小编典典

您缺少 32 位 libc 开发包:

Ubuntu 上,它被称为 libc6-dev-i386 - do sudo apt-get install libc6-dev-i386。有关 Ubuntu 12.04 的额外说明,请参见下文。

Red Hat 发行版上,软件包名称是glibc-devel.i686(感谢 David Gardner 的评论)。

CentOS 5.8 上,软件包名称是glibc-devel.i386(感谢 JimKleck 的评论)。

CentOS 6 / 7 上,软件包名称是glibc-devel.i686.

SLES 上,它被称为 glibc-devel-32bit -do 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

ArchLinux 上,包名是lib32-glibc-do 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

CentOS 5 上你需要做yum install libstdc++-devel.i386

CentOS 6 上你需要做yum install libstdc++-devel.i686

请随时在其他系统的软件包中进行编辑。

2022-08-01