免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
linux2.6內(nèi)核Makefile簡單語法與應(yīng)用
linux2.6內(nèi)核Makefile簡單語法與應(yīng)用來源: 作者: 時(shí)間:2008-10-06 Tag: 點(diǎn)擊: 401 1.1 概述
2.6的Makefile的寫法和應(yīng)用相對于2.4有了一些變化,可能對于很多人來說,因?yàn)檎也坏较嚓P(guān)的文檔,都是模仿內(nèi)核中已有的文件來寫自己的Makefile。其實(shí),在內(nèi)核的Documentation / kbuild目錄下面,還是有對內(nèi)核Makefile語法的詳細(xì)說明的。在這里就2.6內(nèi)核中Makefile最常見的簡單應(yīng)用情況做一個(gè)翻譯和歸納介紹。
2.6內(nèi)核的Makefile分為5個(gè)組成部分:
l 最頂層的Makefile
l 內(nèi)核的.config配置文件
l 在arch/$(ARCH) 目錄下的體系結(jié)構(gòu)相關(guān)的Makefile
l 在scripts/ 目錄下的 Makefile.* 文件,是一些Makefile的通用規(guī)則
l 各級目錄下的大概約500個(gè)kbuild Makefile文件
頂層的Makefile文件讀取 .config文件的內(nèi)容,并總體上負(fù)責(zé)build內(nèi)核和模塊。Arch Makefile則提供補(bǔ)充體系結(jié)構(gòu)相關(guān)的信息。 Scripts目錄下的Makefile文件包含了所有用來根據(jù)kbuild Makefile 構(gòu)建內(nèi)核所需的定義和規(guī)則。
1.2 Kbuild Makefile
對于Makefiles的不同組成部分,有一些不同的語法規(guī)則。針對的對象也不同,對于大部分內(nèi)核模塊或設(shè)備驅(qū)動(dòng)的開發(fā)者和使用者來說,最常接觸到的就是各層目錄下基于kbuild架構(gòu)的kbuild Makefile文件。
Kbuild Makefile的語法結(jié)構(gòu)非常簡單,核心內(nèi)容主要包括
1.2.1 目標(biāo)定義
目標(biāo)定義就是用來定義哪些內(nèi)容要做為模塊編譯,哪些要編譯鏈接進(jìn)內(nèi)核。
例如
obj-y += foo.o
表示要由foo.c或者foo.s文件編譯得到foo.o并鏈接進(jìn)內(nèi)核,而obj-m則表示該文件要作為模塊編譯。 除了y,m以外的obj-x形式的目標(biāo)都不會被編譯。
而更常見的做法是根據(jù).config文件的CONFIG_ 變量來決定文件的編譯方式,如:
obj-$(CONFIG_ISDN) += isdn.o
obj-$(CONFIG_ISDN_PPP_BSDCOMP) += isdn_bsdcomp.o
除了obj-形式的目標(biāo)以外,還有l(wèi)ib-y library庫,hostprogs-y 主機(jī)程序等目標(biāo),但是基本都應(yīng)用在特定的目錄和場合下。
1.2.2 多文件模塊的定義
最簡單的kbuild Makefile如上一節(jié)一句話的形式就夠了,如果一個(gè)模塊由多個(gè)文件組成,那么稍微復(fù)雜一些,采用模塊名加 –objs后綴或者 –y后綴的形式來定義模塊的組成文件。如以下例子:
obj-$(CONFIG_EXT2_FS) += ext2.o
ext2-y := balloc.o bitmap.o
ext2-$(CONFIG_EXT2_FS_XATTR) += xattr.o
模塊的名字為ext2,由balloc.o和bitmap.o兩個(gè)目標(biāo)文件最終鏈接生成ext2.o 直至ext2.ko文件,是否包括xattr.o取決于內(nèi)核配置文件的配置情況。如果CONFIG_EXT2_FS的值是y也沒有關(guān)系,在此過程中生成的 ext2.o將被鏈接進(jìn)built-in.o最終鏈接進(jìn)內(nèi)核。這里需要注意的一點(diǎn)是,該kbuild Makefile所在的目錄中不應(yīng)該再包含和模塊名相同的源文件如ext2.c/ext2.s。
或者寫成如-objs的形式:
obj-$(CONFIG_ISDN) += isdn.o
isdn-objs := isdn_net_lib.o isdn_v110.o isdn_common.o
1.2.3 目錄層次的迭代
如下例:
obj-$(CONFIG_EXT2_FS) += ext2/
如果CONFIG_EXT2_FS 的值為y或m,kbuild將會將ext2目錄列入向下迭代的目標(biāo)中,但是其作用也僅限于此,具體ext2目錄下的文件是要作為模塊編譯還是鏈入內(nèi)核,還是有ext2目錄下的Makefile文件的內(nèi)容來決定的。
1.2.4 模塊的編譯
編譯模塊的時(shí)候,你可以將模塊放在代碼樹中,用Make modules的方式來編譯你的模塊,你也可以將模塊相關(guān)文件目錄放在代碼樹以外的位置,用如下命令來編譯模塊:
make -C path/to/kernel/src M=$PWD modules
-C指定代碼樹的位置,M=$PWD 或 M=`PWD` 告訴kbuild回到當(dāng)前目錄來執(zhí)行build操作。
1.2.5 模塊的安裝
當(dāng)你需要將模塊安裝到非默認(rèn)位置的時(shí)候,你可以用INSTALL_MOD_PATH 指定一個(gè)前綴,如:
make INSTALL_MOD_PATH=/foo modules_install
模塊將被安裝到 /foo/lib/modules目錄下
本文來自: (www.91linux.com) 詳細(xì)出處參考:http://www.91linux.com/html/article/kernel/20081006/13450.html
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
內(nèi)核映像的形成 —— KBuild體系(一)
KBuild MakeFile介紹
Linux內(nèi)核模塊的編譯基礎(chǔ)知識
編譯Linux內(nèi)核(下)---KConfig、Makefile詳解以及ARM平臺Linux內(nèi)核的編譯
Linux內(nèi)核中的Kconfig、Makefile、.config
轉(zhuǎn)kbuild module
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服