help目標可以說是在kbuild中最直接的小目標了,雖然它和我們的**基本沒有什麼關係,而是用來生成kbuild的簡短使用說明,但是用它來作為走近kbuild系統的敲門磚,或許是比較合適的。
用法還是很簡單的
make help
就可以顯示出當前kbuild所支援的小目標們。比如:
具體的大家可以動手操作,體會一下這個過程。
萬事開頭難,既然是你遇到的頭乙個目標,可能你會丈二和尚摸不著頭腦。不知道會是在**。
腫麼辦?如果是你,你會想怎麼做呢?請在這裡停留一分鐘,自己思考一下再往下看我提供的做法。
你看,我們平時自己使用make的時候是怎麼用的呢? 要寫makefile是吧,在makefile裡面加上目標和規則是吧。那好了,kbuild也是基於make這個基本結構運作的。那就是找到別人寫的那個makefile唄。
先別著急找,我們先來看一下make的手冊是怎麼講的。
once a suitable makefile exists, each
time you
change some source files, this ****** shell
command:
make
suffices to perform all necessary recompilations.
the make program uses the makefile description
andthe
last-modification times of
thefiles
to decide which of
thefiles need
to be updated. for each
of those files, it
issues the commands recorded in
the makefile.
make executes commands in
the makefile to
update one
or more target names, where name
is typically a program. if no -f option
is present, make will look for
the makefiles
gnumakefile, makefile, and makefile, in that
order.
總結一下:
還稍微需要解釋一下下,這裡的makefile這個詞有兩種不同的意義,頭一次看的估計會暈,說實話我也有點暈。
* 代詞,代表的是make使用的規則檔案,並不是具體的哪個檔案。
* 名字,是指make執行時,如果沒有傳入-f選項,那麼會按照gnumakefile, makefile, makefile這個順序去搜尋規則檔案
從上面的手冊中,我們可以看到,執行make其實是又其自身的要求的。也就是需要有個規則檔案。那我們再來做個實驗。
隨便新建乙個目錄,cd進去,執行make,看一下結果。
$ mkdir test
$ cd test/
$ make
make: *** no targets specified and no makefile found. stop.
你看是不是啥都幹不了?
整理了一下make的基本知識,再回過來看我們執行的命令。
make help
這次我們的make命令並沒有帶選項-f,所以按照手冊所說,應該是在本地按照順序尋找了規則檔案再執行的。 那我們來看一下,核心原始碼根目錄下都有誰唄。
ls
opying reporting-bugs include scripts
credits arch init security
documentation block ipc sound
kbuild certs kernel tools
kconfig crypto lib usr
maintainers drivers mm virt
makefile firmware net
readme fs samples
我相信你已經看到了點什麼。 正所謂,
已經找到了規則檔案makefile, 那我們就開啟看一下,找找我們的help小目標唄。
相信你已經看到了~ 它就長這個樣子:
help:
@echo
'cleaning targets:'
@echo
' clean - remove most generated files but keep the config and'
@echo
' enough build support to build external modules'
@echo
' mrproper - remove all generated files + config + various backup files'
@echo
' distclean - mrproper + remove editor backup and patch files'
@echo
''@echo
'configuration targets:'
@$(make) -f $(srctree)/scripts/kconfig/makefile help
@echo
''@echo
'other generic targets:'
@echo
' all - build all targets marked with [*]'
@echo
'* vmlinux - build the bare kernel'
@echo
'* modules - build all modules'
@echo
' modules_install - install all modules to install_mod_path (default: /)'
...
怎麼樣,確實夠直接吧,在根目錄的makefile中就找到了目標。看來我們今天的運氣還不錯~
恭喜,你已經知道了乙個kbuild的小目標是如何運作起來的了。你看是不是和我們平時見到的最簡單的makefile結構差不多呢?
一切事物皆有源頭,哪怕是再複雜的結構都可以將其拆分成簡單的組成部分,而去逐個了解和研究。我們的kbuild更是如此。相信你可以通過不斷探索,掌握這看似龐大的kbuild系統~
祝好,加油~
差異可能是重要的
3位可儲存8個值。n位可儲存2 n值。因為乙個位元組的8位,乙個位元組可以存放2 8 256 的值。變數的大小對大量的資訊可以儲存 這是更大的變數可以容納更多的限制。我們將進一步解決這個問題的時候,我們進入不同型別的變數。第二,電腦有乙個有限的可用記憶體。每一次我們宣告乙個變數,那游離的記憶是只要用...
你可能是自由的
序 一直都愛吃甜,甜到微微的澀。一直都想寫作,寫到天昏地暗。一直追逐自由,飛到天涯海角。孤獨的牧羊人在廣廖的草原牧著他的羊兒們,一生孤獨的他在3歲那年,父母已離開人世,剩下相依為命的奶奶也在10歲時離他而去,留下的只有兩頭羊兒。那一年,他哭的是那麼傷心,周圍嬉皮笑臉的人帶著乙個悲傷的面具,假惺惺的來...
這可能是不可取的!
雖然消極期望功能的一部分,我們給它乙個整數而不是。然而,由於分數具有建構函式的願意接受乙個整數,編譯器將使用此建構函式隱式轉換為整數6轉化為分數的物件,然後將其複製到makenegative 初始化引數f.因此,上面的程式列印 6 1 這種隱式轉換為各種初始化 直接 統一和複製 用於隱式會話的建構函...