編譯GeekOS:
開啟終端,依次輸入下面三條命令。
cd ~/geekos-0.3.0/src/project0/build/ 注意:~不能少,~表示目前使用者的主目錄。makebochs
可能會出現的問題
1、第一次make的時候會出現這個錯誤../include/geekos/segment.h:43:5: error: ‘packed’ attribute ignored for field of type ‘uchar_t’ [-Werror=attributes]用
gedit ../include/geekos/segment.h 開啟segment.h檔案,把43行的uchar_t baseHigh PACKED ;改成uint_t baseHigh :8 PACKED ;然後重新make一下。
2、bochs第一次啟動的時候會出現>>PANIC<< .bochsrc:4: vgaromimage directive malformed.錯誤用
gedit .bochsrc 開啟.bochsrc 把vgaromimage: /export/home/daveho/linux/bochs-2.0.2/share/bochs/VGABIOS-lgpl-latest刪除,
把romimage: file=/export/home/daveho/linux/bochs-2.0.2/share/bochs/BIOS-bochs-latest, address=0xf0000改成
romimage:file=$BXSHARE/BIOS-bochs-latest
3、然後把
floppy_command_delay: 500 ips: 1000000 newharddrivesupport: enabled=1
這三行刪除。
再啟動bochs就會有結果。
4、如果在~/geekos-0.3.0/src/project0/src/geekos裡面增加了一個c檔案,需要修改~/geekos-0.3.0/src/project0/build/Makefile,把增加的那個c檔案名稱添加在KERNEL_C_SRCS這個變數後面,如果只是修改了某個c檔案裡面的內容則不需要修改Makefile檔案。
5、做project1時可能會遇到這個錯誤,先會列印一個字串,然後出現一個Exception 13,這個錯誤是因為編譯器的最佳化選項的原因,把Makefile中的CC_GENERAL_OPTS := $(GENERAL_OPTS) -Werror 這一行改成 CC_GENERAL_OPTS := $(GENERAL_OPTS) -Werror -O0
,因為有的編譯器最佳化層級比較高,這裡的-O0(杠大歐零)表示不最佳化。然後還會有str1 str2未使用,driver未初始化等等,這是因為用了這個-Werror參數,這個參數的意思是警告當作錯誤處理,所以就停止編譯了。可以把-Werror去掉,或者直接該原始碼未使用的使用一下,未初始化初始化一下。