国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > Linux Shell > 正文

linux 驅(qū)動(dòng)之Kconfig文件和Makefile文件實(shí)例

2020-07-27 18:58:52
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

linux 驅(qū)動(dòng)之Kconfig文件和Makefile文件實(shí)例

在Linux編寫(xiě)驅(qū)動(dòng)的過(guò)程中,有兩個(gè)文件是我們必須要了解和知曉的。這其中,一個(gè)是Kconfig文件,另外一個(gè)是Makefile文件。如果大家比較熟悉的話(huà),那么肯定對(duì)內(nèi)核編譯需要的.config文件不陌生,在.config文件中,我們發(fā)現(xiàn)有的模塊被編譯進(jìn)了內(nèi)核,有的只是生成了一個(gè)module。這中間,我們?nèi)绾巫寖?nèi)核發(fā)現(xiàn)我們編寫(xiě)的模塊呢,這就需要在Kconfig中進(jìn)行說(shuō)明。至于如何生成模塊,那么就需要利用Makefile告訴編譯器,怎么編譯生成這個(gè)模塊。模仿其實(shí)就是最好的老師,我們可以以?xún)?nèi)核中經(jīng)常使用到的網(wǎng)卡e1000模塊為例,說(shuō)明內(nèi)核中是如何設(shè)置和編譯的。

    首先,我們可以看一下,在2.6.32.60中關(guān)于e1000在Kconfig中是怎么描述的,

config E1000  tristate "Intel(R) PRO/1000 Gigabit Ethernet support"  depends on PCI  ---help---   This driver supports Intel(R) PRO/1000 gigabit ethernet family of   adapters. For more information on how to identify your adapter, go   to the Adapter & Driver ID Guide at:    <http://support.intel.com/support/network/adapter/pro100/21397.htm>    For general information and support, go to the Intel support   website at:    <http://support.intel.com>    More specific information on configuring the driver is in   <file:Documentation/networking/e1000.txt>.    To compile this driver as a module, choose M here. The module   will be called e1000. 

    上面的內(nèi)容是從drivers/net/Kconfig中摘錄出來(lái)的。內(nèi)容看上去不復(fù)雜,最重要的就是說(shuō)明了模塊的名稱(chēng)、用途、依賴(lài)的模塊名、說(shuō)明等等。只要有了這個(gè)說(shuō)明,我們?cè)趕hell下輸入make menuconfig的時(shí)候就可以看到e1000這個(gè)選項(xiàng)了,輸入y表示編譯內(nèi)核;輸入n表示不編譯;輸入m表示模塊編寫(xiě),這是大家都知道的。

    那么,有了這個(gè)模塊之后,需要編譯哪些文件中,我們?cè)赿rivers/net/Makefile看到了這樣的內(nèi)容,

obj-$(CONFIG_E1000) += e1000/ 

    顯然,這段代碼只是告訴我們,要想編譯e1000,必須要包含e1000這個(gè)目錄,所以e1000目錄下必然還有一個(gè)Makefile,果不其然,我們?cè)趀1000目錄下發(fā)現(xiàn)了這個(gè)Makefile,內(nèi)容如下,

obj-$(CONFIG_E1000) += e1000.o  e1000-objs := e1000_main.o e1000_hw.o e1000_ethtool.o e1000_param.o 

    看了這個(gè)文件,其實(shí)大家心理就應(yīng)該有底了。原來(lái)這個(gè)e1000模塊最終生成的文件就是e1000.ko,依賴(lài)的文件就是e1000_main.c、e1000_hw.c、e1000_ethtool.c、e1000_param.c這四個(gè)文件。只要CONFIG_E1000被設(shè)置了,那么這個(gè)模塊就會(huì)被正常編譯。我們要做的就是打開(kāi)這個(gè)開(kāi)關(guān)就可以了,剩下kernel會(huì)幫我們搞定一切。當(dāng)然,如果大家想把這個(gè)模塊拿出來(lái),自己用一個(gè)獨(dú)立的module編譯也是可以的。

    關(guān)于linux驅(qū)動(dòng)的編譯部分,其實(shí)就這兩個(gè)配置文件比較重要。大家可以自己實(shí)際練習(xí)一下,進(jìn)一步加深印象。

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 河南省| 永福县| 子长县| 专栏| 万年县| 黎川县| 红安县| 巴林左旗| 苗栗县| 临城县| 乌苏市| 河津市| 准格尔旗| 泰和县| 杂多县| 大名县| 金川县| 信宜市| 冀州市| 射洪县| 松滋市| 南郑县| 浠水县| 唐河县| 巨鹿县| 扶余县| 醴陵市| 泗水县| 鹤山市| 江津市| 思茅市| 武冈市| 凤台县| 张家川| 康马县| 得荣县| 合作市| 临江市| 垦利县| 洛宁县| 富顺县|