中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 關(guān)于Linux 內(nèi)核配置系統(tǒng)淺析

        關(guān)于Linux 內(nèi)核配置系統(tǒng)淺析

        作者: 時(shí)間:2012-08-29 來源:網(wǎng)絡(luò) 收藏

        前面說過,每個(gè)變量取值范圍是:y,n,m 和空,obj-$(CONFIG_TC) 分別對(duì)應(yīng)著 obj-y,obj-n,obj-m,obj-。如果 CONFIG_TC 為 y,那么 tc.o 就進(jìn)入了 obj-y 列表。obj-y 為包含到 vmlinux 中的目標(biāo)文件列表;obj-m 為編譯成模塊的目標(biāo)文件列表;obj-n 和 obj- 中的文件列表被忽略。就根據(jù)這些列表的屬性進(jìn)行編譯和鏈接。

        export-objs 中的目標(biāo)文件都使用了 EXPORT_SYMBOL() 定義了公共的符號(hào),以便可裝載模塊使用。在 tc.c 文件的最后部分,有 EXPORT_SYMBOL(search_tc_card);,表明 tc.o 有符號(hào)輸出。

        這里需要指出的是,對(duì)于編譯目標(biāo)的定義,存在著兩種格式,分別是老式定義和新式定義。老式定義就是前面 Rules.make 使用的那些變量,新式定義就是 obj-y,obj-m,obj-n 和 obj-。 推薦使用新式定義,不過由于 Rules.make 不理解新式定義,需要在 Makefile 中的適配段將其轉(zhuǎn)換成老式定義。

        c) 適配段

        適配段的作用是將新式定義轉(zhuǎn)換成老式定義。在上面的例子中,適配段就是將 obj-y 和 obj-m 轉(zhuǎn)換成 Rules.make 能夠理解的 L_TARGET,L_OBJS,LX_OBJS,M_OBJS,MX_OBJS。

        L_OBJS := $(sort $(filter-out $(export-objs), $(obj-y))) 定義了 L_OBJS 的生成方式:在 obj-y 的列表中過濾掉 export-objs(tc.o),然后排序并去除重復(fù)的文件名。這里使用到了 GNU Make 的一些特殊功能,具體的含義可參考 Make 的文檔(info make)。

        d) include $(TOPDIR)/Rules.make

        3. 配置文件

        3.1 配置功能概述

        除了 Makefile 的編寫,另外一個(gè)重要的工作就是把新功能加入到 的配置選項(xiàng)中,提供此項(xiàng)功能的說明,讓用戶有機(jī)會(huì)選擇此項(xiàng)功能。所有的這些都需要在 config.in 文件中用配置語言來編寫配置腳本,

        在 Linux 中,配置命令有多種方式:

        配置命令 解釋腳本

        Make config, make oldconfig scripts/Configure

        Make menuconfig scripts/Menuconfig

        Make xconfig scripts/tkparse

        以字符界面配置(make config)為例,頂層 Makefile 調(diào)用 scripts/Configure, 按照 arch/arm/config.in 來進(jìn)行配置。命令執(zhí)行完后產(chǎn)生文件 .config,其中保存著配置信息。下一次再做 make config 將產(chǎn)生新的 .config 文件,原 .config 被改名為 .config.old

        3.2 配置語言

        1) 頂層菜單

        mainmenu_name /prompt/ /prompt/ 是用'或包圍的字符串,'與的區(qū)別是'…'中可使用$引用變量的值。mainmenu_nAME 設(shè)置最高層菜單的名字,它只在 make xconfig 時(shí)才會(huì)顯示。

        2) 詢問語句

        bool /prompt/ /symbol/

        hex /prompt/ /symbol/ /word/

        int /prompt/ /symbol/ /word/

        string /prompt/ /symbol/ /word/

        tristate /prompt/ /symbol/

        詢問語句首先顯示一串提示符 /prompt/,等待用戶輸入,并把輸入的結(jié)果賦給 /symbol/ 所代表的配置變量。不同的詢問語句的區(qū)別在于它們接受的輸入數(shù)據(jù)類型不同,比如 bool 接受布爾類型( y 或 n ),hex 接受 16 進(jìn)制數(shù)據(jù)。有些詢問語句還有第三個(gè)參數(shù) /word/,用來給出缺省值。

        3) 定義語句

        define_bool /symbol/ /word/

        define_hex /symbol/ /word/

        define_int /symbol/ /word/

        define_string /symbol/ /word/

        define_tristate /symbol/ /word/

        不同于詢問語句等待用戶輸入,定義語句顯式的給配置變量 /symbol/ 賦值 /word/。

        4) 依賴語句

        dep_bool /prompt/ /symbol/ /dep/ ...

        dep_mbool /prompt/ /symbol/ /dep/ ...

        dep_hex /prompt/ /symbol/ /word/ /dep/ ...

        dep_int /prompt/ /symbol/ /word/ /dep/ ...

        dep_string /prompt/ /symbol/ /word/ /dep/ ...

        dep_tristate /prompt/ /symbol/ /dep/ ...

        與詢問語句類似,依賴語句也是定義新的配置變量。不同的是,配置變量/symbol/的取值范圍將依賴于配置變量列表/dep/ …。這就意味著:被定義的配置變量所對(duì)應(yīng)功能的取舍取決于依賴列表所對(duì)應(yīng)功能的選擇。以dep_bool為例,如果/dep/ …列表的所有配置變量都取值y,則顯示/prompt/,用戶可輸入任意的值給配置變量/symbol/,但是只要有一個(gè)配置變量的取值為n,則/symbol/被強(qiáng)制成n。

        不同依賴語句的區(qū)別在于它們由依賴條件所產(chǎn)生的取值范圍不同。

        5) 選擇語句

        choice /prompt/ /word/ /word/

        choice 語句首先給出一串選擇列表,供用戶選擇其中一種。比如 Linux for ARM 支持多種基于 ARM core 的 CPU,Linux 使用 choice 語句提供一個(gè) CPU 列表,供用戶選擇:

        choice 'ARM system type'

        Anakin CONFIG_ARCH_ANAKIN

        Archimedes/A5000 CONFIG_ARCH_ARCA5K

        Cirrus-CL-PS7500FE CONFIG_ARCH_CLPS7500

        ……

        SA1100-based CONFIG_ARCH_SA1100

        Shark CONFIG_ARCH_SHARK RiscPC

        Choice 首先顯示 /prompt/,然后將 /word/ 分解成前后兩個(gè)部分,前部分為對(duì)應(yīng)選擇的提示符,后部分是對(duì)應(yīng)選擇的配置變量。用戶選擇的配置變量為 y,其余的都為 n。

        6) if語句

        if [ /expr/ ] then

        /statement/

        ...

        fi

        if [ /expr/ ] then

        /statement/

        ...

        else

        /statement/

        ...

        fi

        if 語句對(duì)配置變量(或配置變量的組合)進(jìn)行判斷,并作出不同的處理。判斷條件 /expr/ 可以是單個(gè)配置變量或字符串,也可以是帶操作符的表達(dá)式。操作符有:=,!=,-o,-a 等。

        7) 菜單塊(menu block)語句

        mainmenu_option next_comment

        comment '…..'

        endmenu

        引入新的菜單。在向內(nèi)核增加新的功能后,需要相應(yīng)的增加新的菜單,并在新菜單下給出此項(xiàng)功能的配置選項(xiàng)。Comment 后帶的注釋就是新菜單的名稱。所有歸屬于此菜單的配置選項(xiàng)語句都寫在 comment 和 endmenu 之間。

        linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉