首頁 >系統教程 >Linux >PC機編譯核心的設定方法與設定:設定編譯

PC機編譯核心的設定方法與設定:設定編譯

WBOY
WBOY轉載
2024-03-13 14:52:02766瀏覽

PC機編譯核心的設定方法與設定:設定編譯

Thisisfreesoftware;seethesourceforcopyingconditions.ThereisNO

warranty;notevenforMERCHANTABILITYorFITNESSFORAPARTICULARPURPOSE.

附註:arm的工具鏈,可以從這裡下載:回覆「ARM」即可查看。

二、設定編譯目標

在配置或編譯核心之前,首先要確定目標CPU構架,以及編譯時採用哪些工具鏈。這是最最基礎的訊息,首先要確定的。

假如你是為目前使用的PC機編譯內核,則無須設定。

否則的話嵌入式linux 培訓,就要明晰設定。

這兒以arm為例,來說明。

有兩種設定方式():

a)更改Makefile

開啟核心原始碼根目錄下的Makefile,變更以下兩個Makefile變數並儲存。

ARCH:=arm

CROSS_COMPILE:=arm-linux-

注意,這兒cross_compile的設置,是假設所使用的交叉工具鏈的gcc程式名稱為arm-linux-gcc。假如實際使用的gcc名稱是some-thing-else-gcc,則這兒照葫蘆畫瓢填some-thing-else-即可。反正,要省去名稱中最後的gcc那3個字母。

b)每次執行make指令時,都會透過命令列參數傳入此訊息。

這似乎是透過make工具的命令列參數指定變數的值。

比如

配置內核時,使用

makeARCH=armCROSS_COMPILE=arm-linux-menuconfig

編譯核心時使用

makeARCH=armCROSS_COMPILE=arm-linux-

注意,實際上,對於編譯PC機核心的情況,即使使用者沒有明晰設置,但並不是這兩項沒有配置。由於假如用戶沒有設定這兩項,核心原始碼頂樓Makefile(坐落源碼根目錄下)會透過以下方法產生這兩個變數的值。

SUBARCH:=$(shelluname-m|sed-es/i.86/i386/-es/sun4u/sparc64/

-es/arm.*/arm/-es/sa110/arm/

-es/s390x/s390/-es/parisc64/parisc/

-es/ppc.*/powerpc/-es/mips.*/mips/

-es/sh[234].*/sh/)

ARCH?=$(SUBARCH)

CROSS_COMPILE?=

經過前面的程式碼,ARCH弄成了PC編譯機的arch,即SUBARCH。為此,假如PC機上uname-m輸出的是ix86,則ARCH的值就成了i386。

而CROSS_COMPILE的值,倘若沒配置,則為空字串。這樣一來所使用的工具鏈程式的名稱,就不再有類似arm-linux-這樣的前綴,就等於是使用了PC機上的gcc。

最後再多說兩句,ARCH的數值還須再進一步做泛化。由於核心原始碼的arch目錄下,不存在i386這個目錄,也沒有sparc64這樣的目錄。

因而頂樓makefile中又構造了一個SRCARCH變量,透過如下程式碼,產生他的值。這樣一來,SRCARCH變量,才最終匹配到內核原始碼arch目錄中的某一個架構名稱。

SRCARCH:=$(ARCH)

ifeq($(ARCH),i386)

SRCARCH:=x86

endif

ifeq($(ARCH),x86_64)

SRCARCH:=x86

endif

ifeq($(ARCH),sparc64)

SRCARCH:=sparc

endif

ifeq($(ARCH),sh64)

SRCARCH:=sh

endif

三、配置核心

核心的功能這麼多,我們必須要什麼部份,每位部份編譯成哪些方式(編進核心還是編成模組),每位部份的工作參數怎樣,那些都是可以配置的。為此,在開始編譯之前,我們須要建立出一份配置清單,放在內核源碼根目錄下,命名為.config文件,之後按照此.config文件,編譯出我們須要的內核。

然而,核心的配置項目太多了,一個一個配linux設定環境變量,太麻煩了。並且,不同的CPU構架,所能配置的配置項目集合arm linux核心中arm中斷實作詳解,是不一樣的。諸如,某種CPU的某個功能特點要不要支援的配置項目arm linux核心中arm中斷實作詳解,就是與CPU構架有關的配置項目。所以,核心提供了一種簡單的配置方式。

以arm為例,具體做法如下。

a)依據我們的目標CPU架構,從核心原始碼arch/arm/configs目錄下,找一個與目標系統最接近的設定檔(例如s3c2410_defconfig),拷貝到核心原始碼根目錄下,命名為.config 。

注意,假若你是為目前PC機編譯內核,最好拷貝如下檔到內核原始碼根目錄下,做為初始設定檔。這個文件,是PC機目前運行的核心編譯時所使用的設定檔。

/lib/modules/`uname-r`/build/.config

這兒順便多說兩句,PC機核心的設定文件,選擇的功能真是多。不編不曉得,一編才曉得。 Linux發行方這樣做的目的,可能是想讓所發行的Linux才能滿足使用者各類的需求吧。

b)執行makemenuconfig對此組態做一些須要的更改,退出時選擇儲存,就將新的設定更新到.config檔中了。

以上是PC機編譯核心的設定方法與設定:設定編譯的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:itcool.net。如有侵權,請聯絡admin@php.cn刪除