久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久


嵌入式Linux內核如何編譯

分享到:
           

    編譯嵌入(ru)式(shi)Linux內核都是通(tong)過make的不(bu)同命令(ling)來實現(xian)的,它的執行(xing)配置文件是Makefile。Linux內核中不(bu)同的目錄結構(gou)里都有(you)相應的Makefile,而(er)不(bu)同的Makefile又通(tong)過彼(bi)此(ci)之(zhi)間的依賴(lai)關系構(gou)成統一的整體,共同完成建立(li)依存(cun)關系、建立(li)內核等功能。

    內(nei)(nei)核(he)的編(bian)譯根據不同的情況會有不同的步(bu)驟(zou),但(dan)其中主(zhu)要分(fen)別(bie)為3個步(bu)驟(zou):內(nei)(nei)核(he)配置、建立依(yi)存關(guan)系、建立內(nei)(nei)核(he),其他的為一些(xie)輔助(zhu)功能,如(ru)清除文件等。如(ru)果在實際編(bian)譯時若(ruo)出(chu)現錯(cuo)誤,可以考慮采用其他輔助(zhu)功能。下面首(shou)先分(fen)別(bie)講述這3步(bu)為主(zhu)要的步(bu)驟(zou)。

    1.內核配置

    第一步內核配置中的選項主要是用戶用來為目標板選擇處理器架構的選項,不同的處理器架構會有不同的處理器選項,比如ARM就有其專用的選項如“Multimedia capabilities port drivers”等。因此,在此之前,必須確保在根目錄中Makefile里“ARCH”的值已設定了目標板的類型,如:
    ARCH:= arm

    接下來(lai)就可以進行內核配(pei)置(zhi)了,內核支持4種不同的配(pei)置(zhi)方法(fa),這幾種方法(fa)只是與(yu)用(yong)戶交互的界面不同,其實現的功能(neng)是一(yi)樣的。每種方法(fa)都會通過讀入了一(yi)個默認(ren)的配(pei)置(zhi)文(wen)件,即根目錄下“.config”隱(yin)藏文(wen)件(用(yong)戶也可以手動(dong)修改該(gai)文(wen)件,但不推薦使用(yong))來(lai)實現。

    當然,用戶也可以自己加載其他配置文件,也可以將當前的配置保存為其他名字的配置文件。這4種方式如下所示:
    ·make config:基于文本的為傳統的配置界面,不推薦使用。
    ·make menuconfig:基于文本選單的配置界面,字符終端下推薦使用。
    ·make xconfig:基于圖形窗口模式的配置界面,Xwindow下推薦使用。
    ·make oldconfig:自(zi)動(dong)讀入“.config”配置文件,并(bing)且只要(yao)求用戶(hu)設(she)定前次沒(mei)有設(she)定過的選項(xiang)。 

    在這4種模式中,make menuconfig使用為廣泛(fan),下面就以make menuconfig為例進行講解(jie),如圖1.1所(suo)示。

圖1.1  make menuconfig配置界面
圖1.1 make menuconfig配置界面

    從該(gai)圖中(zhong)可以(yi)(yi)看出,Linux內核允(yun)許(xu)用戶(hu)對(dui)其各類(lei)(lei)(lei)功能逐項(xiang)(xiang)配(pei)置(zhi),一(yi)共(gong)有(you)18類(lei)(lei)(lei)配(pei)置(zhi)選(xuan)項(xiang)(xiang),這(zhe)里就不對(dui)這(zhe)18類(lei)(lei)(lei)配(pei)置(zhi)選(xuan)項(xiang)(xiang)進行一(yi)一(yi)講解了(le),需要(yao)(yao)的(de)讀者可以(yi)(yi)參見(jian)相關選(xuan)項(xiang)(xiang)的(de)help。在menuconfig的(de)配(pei)置(zhi)界面中(zhong)是純鍵盤的(de)操作,用戶(hu)可使用上(shang)下(xia)鍵和“Tab”鍵移動光(guang)標以(yi)(yi)進入相關子項(xiang)(xiang),如(ru)圖1.2所示進入了(le)“System Type”子項(xiang)(xiang),該(gai)子項(xiang)(xiang)是一(yi)個重要(yao)(yao)的(de)選(xuan)項(xiang)(xiang),主(zhu)要(yao)(yao)用來(lai)選(xuan)擇處理器(qi)的(de)類(lei)(lei)(lei)型。

    可以看到(dao),每個(ge)選項(xiang)(xiang)前(qian)都(dou)有(you)個(ge)括號,按空格鍵或“Y”鍵表示包含該(gai)選項(xiang)(xiang),按“N”表示不(bu)包含該(gai)選項(xiang)(xiang)。

    另外,讀者可(ke)以(yi)(yi)(yi)注意(yi)到,這里的(de)括(kuo)號(hao)有3種:中括(kuo)號(hao)、尖(jian)括(kuo)號(hao)和圓括(kuo)號(hao)。讀者用(yong)空(kong)格鍵(jian)選擇相應的(de)選項時(shi)可(ke)以(yi)(yi)(yi)發現(xian):中括(kuo)號(hao)里要(yao)么(me)是(shi)空(kong),要(yao)么(me)是(shi)“*”;尖(jian)括(kuo)號(hao)里可(ke)以(yi)(yi)(yi)是(shi)空(kong)、“*”和“M”,分(fen)別表示包含選項、不包含選項和編(bian)譯成模塊(kuai);圓括(kuo)號(hao)的(de)內容是(shi)要(yao)求用(yong)戶在所提供的(de)幾個選項中選擇一項。

    此外(wai),要注意(yi)2.6和(he)2.4內核在(zai)(zai)串(chuan)口命名上的一個(ge)重(zhong)要區(qu)別,在(zai)(zai)2.4內核中“COM1”對應(ying)的是(shi)“ttyS0”,而在(zai)(zai)2.6內核中“COM1”對應(ying)“ttySAC0”,因此在(zai)(zai)啟動參數的子(zi)項要格外(wai)注意(yi),如圖1.3所示,否則串(chuan)口打印不出(chu)信息。

圖1.2  System Type子項
圖1.2 System Type子(zi)項(xiang)

圖1.3  啟動參數配置子項
圖1.3 啟動參數配置子項(xiang)

    一般情況(kuang)下(xia),使(shi)用廠商(shang)提供的(de)(de)默(mo)認配(pei)(pei)置(zhi)文件都能(neng)正常運(yun)行(xing),所以(yi)用戶初(chu)次使(shi)用時可以(yi)不用對其(qi)進行(xing)額外的(de)(de)配(pei)(pei)置(zhi),以(yi)后使(shi)用需(xu)要其(qi)他功能(neng)時再另行(xing)添加(jia),這樣可以(yi)大(da)大(da)減少出錯的(de)(de)幾率,有(you)利于錯誤(wu)定位。在完成配(pei)(pei)置(zhi)之后,就(jiu)可以(yi)保存退出,如圖1.4所示。

圖1.4  保存退出
圖1.4 保存退出

    2.建立依賴關系

    由于(yu)內(nei)核源碼樹中的(de)(de)大多數文件都(dou)與一(yi)些(xie)頭文件有依賴關(guan)系(xi),因此要(yao)順利建(jian)(jian)立(li)內(nei)核,內(nei)核源碼樹中的(de)(de)每(mei)個(ge)Makefile就必須(xu)知道這(zhe)些(xie)依賴關(guan)系(xi)。建(jian)(jian)立(li)依賴關(guan)系(xi)往往發(fa)生(sheng)在第(di)一(yi)次編譯內(nei)核的(de)(de)時(shi)候(hou),它會(hui)在內(nei)核源碼樹中每(mei)個(ge)子目錄產生(sheng)一(yi)個(ge)“.depend”文件,運行“make dep”即(ji)可。

    3.建立內核

    建(jian)立內(nei)(nei)(nei)核可(ke)以(yi)使(shi)用“make zImage”或“make bzImage”,這里建(jian)立的(de)為壓(ya)(ya)縮(suo)(suo)的(de)內(nei)(nei)(nei)核映(ying)(ying)像。通常(chang)在Linux中,內(nei)(nei)(nei)核映(ying)(ying)像分(fen)為壓(ya)(ya)縮(suo)(suo)的(de)內(nei)(nei)(nei)核映(ying)(ying)像和(he)未壓(ya)(ya)縮(suo)(suo)的(de)內(nei)(nei)(nei)核映(ying)(ying)像。其中,壓(ya)(ya)縮(suo)(suo)的(de)內(nei)(nei)(nei)核映(ying)(ying)像通常(chang)名為zImage,位(wei)于(yu)“arch/$(ARCH)/boot”目錄中。而未壓(ya)(ya)縮(suo)(suo)的(de)內(nei)(nei)(nei)核映(ying)(ying)像通常(chang)名為vmlinux,位(wei)于(yu)源(yuan)碼樹(shu)的(de)根目錄中。

    到這一步就完成(cheng)了內核源代碼的(de)編(bian)譯,之后,讀者可(ke)以使用上(shang)一小節所講述的(de)方法,把內核壓縮文件下載到開(kai)發板上(shang)運(yun)行。

    小知識:在嵌入式(shi)Linux的(de)(de)(de)源碼(ma)樹中(zhong)(zhong)通常有以下幾個配置(zhi)文件(jian),“.config”、“autoconf.h”、“config.h”。其(qi)中(zhong)(zhong)“.config”文件(jian)是make menuconfig默認的(de)(de)(de)配置(zhi)文件(jian),位(wei)于源碼(ma)樹的(de)(de)(de)根目(mu)錄(lu)中(zhong)(zhong);“autoconf.h”和“config.h”是以宏(hong)的(de)(de)(de)形式(shi)表示了內核的(de)(de)(de)配置(zhi),當用(yong)戶(hu)使用(yong)make menuconfig做(zuo)了一定(ding)的(de)(de)(de)更(geng)改(gai)之后,系(xi)統自動會在“autoconf.h”和“config.h”中(zhong)(zhong)做(zuo)出相應的(de)(de)(de)更(geng)改(gai),它們位(wei)于源碼(ma)樹的(de)(de)(de)“/include/linux/”下。


   熱點(dian)鏈接:

   1、嵌入式Linux編譯器GCC編譯流程
   2、北京嵌入式培訓哪好
   3、嵌入式培訓資料:搭建交叉編譯環境
   4、六種常見嵌入式操作系統
   5、嵌入式Linux編輯器vi的使用

更多新聞>>