nachos:nachos-3.4-SDU.tar.gz
ubuntu:ubuntu-16.04.5-desktop-i386.iso
- 安装ubuntu 32位
- 将nachos-3.4-SDU.tar.gz压缩文件复制到ubuntu,并解压缩
- 在nachos-3.4-SDU目录中打开终端,进入root模式,使用命令“cp -r gcc-2.8.1-mips.tar.gz /usr/local”命令将gcc-2.8.1-mips.tar.gz复制到/usr/local目录下
- 在/usr/local目录下使用终端解压缩gcc-2.8.1-mips.tar.gz文件:tar -xvf gcc-2.8.1-mips.tar.gz
- 进入Nachos的目录code/test(简记为../test),
(1)删除../test/arch/unknown-i386-linux/depends目录下的所有文件;
(2)删除../test/arch/unknown-i386-linux/objects目录下的所有文件
(3)删除../test目录下的所有扩展名为.noff的文件
(4)运行make,如果交叉编译器安装成功,../test目录下几个.c文件都产生了一个对应的.noff文件,同时屏幕应输出下述信息:
>>> Linking arch/unknown-i386-linux/objects/halt.coff <<<
/usr/local/mips/bin/decstation-ultrix-ld -T script -N arch/unknown-i386-linux/objects/start.o arch/unknown-i386-linux/objects/halt.o -o arch/unknown-i386-linux/objects/halt.coff
>>> Converting to noff file: arch/unknown-i386-linux/bin/halt <<<
../bin/arch/unknown-i386-linux/bin/coff2noff arch/unknown-i386-linux/objects/halt.coff arch/unknown-i386-linux/bin/halt
numsections 3
Loading 3 sections:
".text", filepos 0xd0, mempos 0x0, size 0x100
".data", filepos 0x1d0, mempos 0x100, size 0x0
".bss", filepos 0x0, mempos 0x100, size 0x0
ln -sf arch/unknown-i386-linux/bin/halt halt
>>> Linking arch/unknown-i386-linux/objects/shell.coff <<<
/usr/local/mips/bin/decstation-ultrix-ld -T script -N arch/unknown-i386-linux/objects/start.o arch/unknown-i386-linux/objects/shell.o -o arch/unknown-i386-linux/objects/shell.coff
>>> Converting to noff file: arch/unknown-i386-linux/bin/shell <<<
../bin/arch/unknown-i386-linux/bin/coff2noff arch/unknown-i386-linux/objects/shell.coff arch/unknown-i386-linux/bin/shell
numsections 3
Loading 3 sections:
".text", filepos 0xd0, mempos 0x0, size 0x200
".data", filepos 0x2d0, mempos 0x200, size 0x0
".bss", filepos 0x0, mempos 0x200, size 0x0
ln -sf arch/unknown-i386-linux/bin/shell shell
>>> Linking arch/unknown-i386-linux/objects/matmult.coff <<<
/usr/local/mips/bin/decstation-ultrix-ld -T script -N arch/unknown-i386-linux/objects/start.o arch/unknown-i386-linux/objects/matmult.o -o arch/unknown-i386-linux/objects/matmult.coff
>>> Converting to noff file: arch/unknown-i386-linux/bin/matmult <<<
../bin/arch/unknown-i386-linux/bin/coff2noff arch/unknown-i386-linux/objects/matmult.coff arch/unknown-i386-linux/bin/matmult
numsections 3
Loading 3 sections:
".text", filepos 0xd0, mempos 0x0, size 0x3c0
".data", filepos 0x490, mempos 0x3c0, size 0x0
".bss", filepos 0x0, mempos 0x3c0, size 0x12c0
ln -sf arch/unknown-i386-linux/bin/matmult matmult
>>> Linking arch/unknown-i386-linux/objects/sort.coff <<<
/usr/local/mips/bin/decstation-ultrix-ld -T script -N arch/unknown-i386-linux/objects/start.o arch/unknown-i386-linux/objects/sort.o -o arch/unknown-i386-linux/objects/sort.coff
>>> Converting to noff file: arch/unknown-i386-linux/bin/sort <<<
../bin/arch/unknown-i386-linux/bin/coff2noff arch/unknown-i386-linux/objects/sort.coff arch/unknown-i386-linux/bin/sort
numsections 3
Loading 3 sections:
".text", filepos 0xd0, mempos 0x0, size 0x2c0
".data", filepos 0x390, mempos 0x2c0, size 0x0
".bss", filepos 0x0, mempos 0x2c0, size 0x1000
ln -sf arch/unknown-i386-linux/bin/sort sort
6. 在终端窗口下进入目录code/threads/,运行make命令,可编译生成一个基本的Nachos内核(多线程)。编译时如果屏幕输出的最后几行信息如下:
....>>> Linking arch/unknown-i386-linux/bin/nachos <<<
g++ arch/unknown-i386-linux/objects/main.o ........................
..................................................................
..................................................................
ln -sf arch/unknown-i386-linux/bin/nachos nachos
表示已经成功编译生成了一个最小的Nachos内核。目录threads/下的文件nachos是一链接到可执行程序arch/unknown-i386-linux/bin/nachos的链接文件。