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中文網其他相關文章!