日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

FreeNOS源码编译

發布時間:2023/12/15 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 FreeNOS源码编译 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?????? FreeNOS是一個使用C++編寫的一個具有完整多任務調度,進程間通信以及中斷處理等功能作系統,還包括文件系統掛載,文件節點創建,基本上涵蓋了一個操作系統啟動初期的實地址模式到保護模式的跳轉,初始化硬件資源以及實現內核態與用戶態的陷阱門接口,加載設備驅動,最后進入shell終端,是學習操作系統很好的一個開源項目。
????? 項目主頁 www.freenos.org,也即是FreeNOS的官網,如下:

?該項目源碼使用C++編寫,使用了許多經典的設計模式,模塊類,虛函數也運用的十分巧妙,對深刻學習理解C++編程有很大的幫助作用。

????? 編譯過程會遇到很多坑,如果讀者遇到了坑,看看《編譯FreeNOS遇到的坑匯總》是否有解決方法了。

???? 讀者可以從官網上下載源碼,也可以從GitHub上下載源碼。截至2022年2月2日,最新的版本為1.0.3版本,GitHub歷史版本有很多,如下:

?編譯過程基本上是按照官網documentation描述來的,如下:

之后就跳轉到FreeNOS/README.md at master · nieklinnenbank/FreeNOS · GitHub 頁面,按頁面的來就行,也可以在源碼目錄的根目錄下,找到README.md文件,里面也有編譯過程的說明。

下面就以1.0.3版本,以64位x86架構的機器,以Ubuntu 16.04操作系統為例子來講解編譯過程,基本上是翻譯README.md文件的內容,只是對坑做了重點說明。

首先需要在機器上安裝一些依賴庫或工具。FreeNOS需要SCons和C++編譯器,如:g++,用于編譯生成鏡像文件。

1:執行如下命令,以便更新系統庫緩沖和安裝一些必要的開發工具:

sudo apt-get update sudo apt-get install build-essential scons genisoimage xorriso qemu-system binutils-multiarch u-boot-tools

說明:scons是Linux下的一種自動構建工具,類似于cmake,在安裝scons之前,需要確保已經安裝過python,Ubuntu16.04自帶python2.7,所以不需要重復安裝python。?

2:如果系統是64位的,你需要執行如下命令以安裝GCC multilib package包以便能交叉編譯以適應32位的架構。

sudo apt-get install gcc-multilib g++-multilib

3:下載源碼,執行如下命令下載最新源碼:

git clone https://github.com/nieklinnenbank/FreeNOS

4:為了編譯構建FreeNOS,執行如下命令:(注意:該命令采用默認設置構建,默認是指:Intel架構的cpu,采用gcc的debug模式)

scons

注意這里有2個坑:

坑1:編譯時會彈出如下錯誤:

scons: Building targets ...

ISO build/intel/pc/boot.iso

grub-mkrescue: error: /usr/lib/grub/i386-pc/modinfo.sh doesn't exist. Please specify --target or --directory

這個坑請參考《編譯FreeNOS報/usr/lib/grub/i386-pc/modinfo.sh doesn‘t exist錯誤》博文解決。

坑2:

ImportError: No module named pysvn

這個坑請參考《編譯FreeNOS遇到的坑匯總》的坑4描述解決。

如果一切沒問題,在freeNOS/FreeNOS-1.0.3/build/intel/pc目錄下會生成boot.iso文件,如果沒生成,證明編譯構建沒成功!

為了在編譯時將所有的構建命令輸出到控制臺,可以采用如下命令編譯構建:

scons VERBOSE=True

為了在編譯構建過程中開啟編譯器優化功能,可以采用如下命令編譯構建:

scons DEBUG=False

但是這樣的話,將會導致GDB調試功能失效。為了清除構建目錄,可以執行如下命令:

scons -c

為了刪除編譯構建過程中產生的scons臨時文件,可以執行如下命令:

rm -rf build .sconf_temp .sconsign.dblite

以上說明的是基于intel+X86_64的編譯構建方法,對于ARM的請參見上文提到的README.md文件描述。
參考鏈接:https://blog.csdn.net/weixin_38134600/article/details/88329971

總結

以上是生活随笔為你收集整理的FreeNOS源码编译的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。