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++-multilib3:下載源碼,執行如下命令下載最新源碼:
git clone https://github.com/nieklinnenbank/FreeNOS4:為了編譯構建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源码编译的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 终于来了!小米手环8“证件照”外形公布:
- 下一篇: 再添 2 款,Nokia G20 / G