1. 程式人生 > >Linux下GeekOS開發流程及錯誤解決

Linux下GeekOS開發流程及錯誤解決

編譯GeekOS:

開啟終端,依次輸入下面三條命令。

cd ~/geekos-0.3.0/src/project0/build/ 注意:~不能少,~表示當前使用者的主目錄。
make
bochs
可能會出現的問題

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去掉,或者直接該原始碼未使用的使用一下,未初始化初始化一下。