- 30天自制操作系統(tǒng)
- (日)川合秀實(shí)
- 12字
- 2020-03-11 14:01:49
第6天 分割編譯與中斷處理
1 分割源文件(harib03a)
本來(lái)想接著詳細(xì)講解一下昨天剩下的程序,但一上來(lái)就說(shuō)這些,有點(diǎn)乏味,所以還是先做點(diǎn)準(zhǔn)備活動(dòng)吧。不經(jīng)意地看一下bootpack.c,發(fā)現(xiàn)它竟然已長(zhǎng)達(dá)近300行,是太長(zhǎng)了點(diǎn)。所以我們決定把它分割為幾部分。
將源文件分割為幾部分的利弊,大致如下。
優(yōu)點(diǎn)
(1) 按照處理內(nèi)容進(jìn)行分類(lèi),如果分得好的話(huà),將來(lái)進(jìn)行修改時(shí),容易找到地方。
(2) 如果Makefile寫(xiě)得好,只需要編譯修改過(guò)的文件,就可以提高make的速度。
(3) 單個(gè)源文件都不長(zhǎng)。多個(gè)小文件比一個(gè)大文件好處理。
(4) 看起來(lái)很酷(笑)。
缺點(diǎn)
(5) 源文件數(shù)量增加。
(6) 分類(lèi)分得不好的話(huà),修改時(shí)不容易找到地方。
■■■■■
我們先將源文件按下圖分割一下看看。

分割并不是很難,但有一點(diǎn)很關(guān)鍵。比如如果graphic.c也想使用naskfunc.nas的函數(shù),就必須要寫(xiě)上“void io_out8(int port, int data); ”這種函數(shù)聲明。雖然這都已經(jīng)寫(xiě)在bootpack.c里了,但編譯器在編譯graphic.c時(shí),根本不知道有bootpack.c存在。
這樣整理一下看起來(lái)就清爽多了。對(duì)應(yīng)源文件的分割,我們還要修改Makefile,流程如下:

理解了這個(gè)流程,Makefile也就很容易看懂了。
現(xiàn)在再來(lái)“make run”。運(yùn)行起來(lái)一點(diǎn)問(wèn)題也沒(méi)有,分割成功了。
- Linux系統(tǒng)架構(gòu)與運(yùn)維實(shí)戰(zhàn)
- 構(gòu)建高可用Linux服務(wù)器(第4版)
- 大學(xué)計(jì)算機(jī)應(yīng)用基礎(chǔ)實(shí)踐教程(Windows 7+Office 2013)
- vSphere Virtual Machine Management
- 嵌入式系統(tǒng)原理及開(kāi)發(fā)
- Learning Bootstrap
- NetDevOps入門(mén)與實(shí)踐
- 寫(xiě)給架構(gòu)師的Linux實(shí)踐:設(shè)計(jì)并實(shí)現(xiàn)基于Linux的IT解決方案
- Linux網(wǎng)絡(luò)配置與安全管理
- Windows 7使用詳解(修訂版)
- Learning Continuous Integration with Jenkins(Second Edition)
- Raspberry Pi入門(mén)指南
- Linux內(nèi)核分析及應(yīng)用
- 基于Arduino的嵌入式系統(tǒng)入門(mén)與實(shí)踐
- Hadoop Operations and Cluster Management Cookbook