我使用執行make menuconfig配置核心。使用之前,先執行make mrproper,該命令會刪除核心源**中的./config檔案和.o檔案保證源**的乾淨。
在執行make menuconfig時,這裡面會涉及到幾個資料夾:
linux核心根目錄下的scripts資料夾
arch/$arch/kconfig檔案、各層目錄下的kconfig檔案
linux核心根目錄下的makefile檔案、各層目錄下的makefile檔案
linux核心根目錄下的的.config檔案、arm/$arch/下的config檔案
linux核心根目錄下的 include/generated/autoconf.h檔案
其中,scripts資料夾存放的是跟make menuconfig配置介面的圖形繪製相關的檔案,無需關心。
分布在各目錄下的kconfig構成了乙個分布式的核心配置資料庫,每個kconfig分別描述了所屬目錄原始檔相關的核心配置選單。在核心配置make menuconfig(或xconfig等)時,從kconfig中讀出配置選單,使用者配置完後儲存到.config(在頂層目錄下生成)中。在核心編譯時,主makefile呼叫這個.config,就知道了使用者對核心的配置情況。kconfig就是對應著核心的配置選單。核心原始碼中,了解了kconfig、makefile和config,就大致了解了核心**的整個框架。
在根目錄下執行make menuconfig時,系統會讀取arch/$arch目錄下的kconfig檔案生成整個配置介面選項,其中$arch值可有makefile檔案獲得:
subarch := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \
-e s/arm.*/arm/ -e s/sa110/arm/ \
-e s/s390x/s390/ -e s/parisc64/parisc/ \
-e s/ppc.*/powerpc/ -e s/mips.*/mips/ \
-e s/sh[234].*/sh/ )
所以,在伺服器中進行交叉編譯時,需要顯式設定arch的值,否則arch會使用subarch的值。
交叉編譯時,需要準備好交叉編譯工具鏈和核心的原始碼。我使用的是迅為的imx6開發板,在開發板中燒寫ubuntu系統。
首先,迅為的資料中已經包含了核心原始碼和工具鏈。進入kernel-imx目錄,如下圖所示:
直接執行build_qt_kernel.sh指令碼,即可編譯核心。指令碼中的內容如下:
在kernel_imx/arch/arm/boot目錄下生成核心映象。
生成的zimage和uimage都是生成的可執行核心映象檔案,2者在u-boot中啟動的方式分別為go addr與bootm addr來實現啟動過程(未實驗過,我使用的是uimage,用的是bootm)。
對於linux核心,編譯可以生成不同格式的映像檔案,例如:
# make zimage
# make uimage
zimage是arm linux常用的一種壓縮映像檔案,uimage是u-boot專用的映像檔案,它是在zimage之前加上乙個長度為0x40的「頭」,說明這個映像檔案的型別、載入位置、生成時間、大小等資訊。換句話說,如果直接從uimage的0x40位置開始執行,zimage和uimage沒有任何區別。另外,linux2.4核心不支援uimage,linux2.6核心加入了很多對嵌入式系統的支援,但是uimage的生成也需要設定。
使用hexdump命令,檢視uimage和zimage,如下:
Linux 2 6 37 1核心的交叉編譯
linux 2.6.37.1核心的交叉編譯 本文主要介紹適合arm 處理器s3c2440目標板的最新版本linux 核心 linux 2.6.37.1的交叉編譯。環境為 fedora14,編譯器arm linux 4.3.2 1 linux核心的編譯過程 對於 linux 2.6.37.1.tar....
交叉編譯龍芯版本核心
2019 01 14 16 22 22 redwingz 閱讀數 950 更多分類專欄 系統其它 依據核心系統的自帶的預設龍芯配置,編譯系統核心3.10,配置檔案 arch mips configs fuloong2e defconfig 本地編譯環境 cat etc redhat release ...
樹莓派核心模組交叉編譯
一 獲得arm gcc 交叉編譯器 安裝該編譯器,把編譯器路徑加入到環境變數中 gedit bashrc在最後一行新增 export path path your dir tools master arm bcm2708 arm bcm2708hardfp linux gnueabi bin 然後終...