Nachos 3 4 安裝教程

2021-05-25 01:30:07 字數 3783 閱讀 1670

nachos 3.4安裝過程日誌

os:ubuntu 10.04.2

editor:gedit

nachos 3.4

gcc(g++) 3.4.6

1      

手動安裝低版本的gcc(g++)

可能由於nachos 3.4版本的**太老的原因,編譯nachos需要gcc的版本要小於4.0。通過

$ gcc -v

指令檢視ubuntu自帶的gcc版本,如果高於4.0則需要安裝低版本的gcc。(ubuntu 10.04.2中gcc的版本是4.4.3)

1.1              

**:

libg2c0-dev_3.4.6-1ubuntu2_i386.deb

cpp-3.4_3.4.6-1ubuntu2_i386.deb

g77-3.4_3.4.6-1ubuntu2_i386.deb

gcc-3.4-base_3.4.6-1ubuntu2_i386.deb

gcc-3.4_3.4.6-1ubuntu2_i386.deb

g++-3.4_3.4.6-1ubuntu2_i386.deb

libstdc++6-dbg_3.4.6-1ubuntu2_i386.deb

1.2              

安裝gcc(g++)

上述檔案的安裝是有順序的,具體數序我也記不清楚。不過不用擔心,雙擊執行gcc-3.4_3.4.6-1ubuntu2_i386.deb

這裡有個搞笑的問題,g++-3.4_3.4.6-1ubuntu2_i386.deb

和libstdc++6-dbg_3.4.6-1ubuntu2_i386.deb

是相互依賴的。囧。沒關係,執行命令

$ sudo kpkg g++-3.4_3.4.6-1ubuntu2_i386.deb

libstdc++6-dbg_3.4.6-1ubuntu2_i386.deb

就ok了。

1.3              

檢查gcc(g++)是否安裝成功

執行命令

$ g++-3.4

$ gcc-3.4

如果提示no input files就說明安裝成功了。可以進行下一步了。

2      

安裝make工具

如果系統中沒有安裝make工具,執行命令

$ sudo apt-get install make

稍等片刻就安裝好了,由於nachos中使用的命令是gmake,因此在make的時候會出現找不到gmake的錯誤提示,這裡把二者link一下,執行指令

$ sudo ln /usr/bin/make /usr/bin/gmake

3      

解壓縮nachos 3.4

把nachos 3.4 解壓縮到/usr/local/lib/nachos-3.4中。大概會有三個目錄c++example,code和doc,安裝過程只需要關注code目錄即可。

4      

修改nachos 3.4準備安裝

4.1              

修改makefile.dep檔案,我的機器是i386平台,因此將host = -dhost_mips這行**注釋掉。同時取消386平台後的兩行**的注釋:

host = -dhost_i386

cpp=/usr/bin/cpp

4.2              

修改makefile.common檔案,修改預設使用的編譯器為gcc(g++)3.4。找到並修改下述**

cc = g++-3.4

ld = g++-3.4

4.3              

修改code/threads/utility.h檔案,注釋掉**#include ,同時新增兩條預編譯**:

#define true true

#define false false

否則會出現找不到bool.h的錯誤,這是由於nachos自己定義來bool變數卻又不給我們標頭檔案,!囧,我們完全可以使用標準的bool變數代替。

4.4              

修改threads/utility.cc檔案,注釋掉以下**

//#ifdef host_snake

//#include

//#else

//#ifdef host_sparc

//#include

//#else

//#include "/usr/include/stdarg.h"

//#endif

//#endif

同時新增一行包含標頭檔案的**,#include 否則會出現找不到stdarg.h的錯誤,通過上面的預編譯**可以看出問題所在。

4.5              

修改threads/switch.s檔案,這個檔案中有四個預定義的塊。以

#ifdef ***x開始,#endif結束,注釋掉除host_i386之外的三個塊。修改host_i386塊,修改.globl  _threadroot 為.globl threadroot,switch,相對應的也要把下面的兩個procesure名字前的_刪掉。

4.6              

修改machine/sysdep.cc檔案,這個檔案需要修改的地方非常多,有些地方可能會忘記記錄在這裡或者有不同的錯誤發生,只要根據錯誤提示找到對應的**進行修改即可。大部分的錯誤是函式定義出突和強制型別轉化的問題。這裡記錄一部分。

增加兩行標頭檔案包含**

#include

#include

注釋掉以下的所有的函式,,這些函式與unistd.h中的函式定義衝突:

int creat()

int open()

void signal()

int unlock()

int read()

int write()

int write()

int lseek()

int unlink()

extern int recvfrom()

extern int sendto()

void exit()

void exit(exitcode)

int mprotect()

int bind()

int revcfrom()

int sendto()

強制型別轉換:

readfromsocket

函式中retval = recvfrom(sockid, buffer, packetsize, 0, (struct sockaddr *) &uname, (socklen_t *)&size);

sendtosocket

函式中retval = sendto(sockid, buffer, packetsize, 0,  (const sockaddr* ) &uname, sizeof(uname));

5      

make nachos 3.4

cd到code目錄,執行命令:

$ sudo make

如果沒有錯誤提示的話,nachos 3.4 就編譯成功了。編譯成功後會在vm目錄內生成乙個nachos可執行檔案,執行之可以看到很多backtrace和memory map的資訊。

6      

交叉編譯(待續)

KNOPPIX3 4硬碟安裝漢化教程

knoppix3.4硬碟安裝漢化教程 a.簡介 本文適合初學linux的朋友,或是剛從windows過來的朋友。knoppix是乙個著名的linux發行版,可以在光碟上直接執行。檢視各種linux發行版的被關注程度 knoppix英文論壇 knoppix台灣 我將knoppix裝在硬碟上,用它做li...

Python系列教程34

宣告 在人工智慧技術教學期間,不少學生向我提一些python相關的問題,所以為了讓同學們掌握更多擴充套件知識更好的理解人工智慧技術,我讓助理負責分享這套python系列教程,希望能幫到大家!由於這套python教程不是要由所寫,所以不如我的人工智慧技術教學風趣幽默,學起來比較枯燥 但它的知識點還是講...

python3 4教程 Python教程(四)

6 函式 一 前面寫的程式都是很小的,假設我們要編寫乙個很大的程式,並且要重複使用很多遍相同的 直觀的想法,自然就是把這些 裝到乙個 箱子 裡,給這個 箱子 編上號,等到用的時候,告訴電腦 箱子 裡面的就是所需要的 函式就可以實現這樣的功能。函式是python中最主要也是最重要的 組織和復用手段。假...