Kbuild¶
輸出檔案¶
modules.order¶
此檔案記錄模組在 Makefile 中出現的順序。 modprobe 使用它來確定性地解析匹配多個模組的別名。
modules.builtin¶
此檔案列出了所有構建到核心中的模組。 modprobe 使用它來避免在嘗試載入內建模組時失敗。
modules.builtin.modinfo¶
此檔案包含構建到核心中的所有模組的 modinfo 資訊。 與單獨模組的 modinfo 不同,所有欄位都以模組名稱為字首。
modules.builtin.ranges¶
此檔案包含構建到核心中的所有模組的地址偏移範圍(每個 ELF 段)。 結合 System.map,它可以用於將模組名稱與符號相關聯。
環境變數¶
KCPPFLAGS¶
預處理時要傳遞的附加選項。 預處理選項將用於 kbuild 進行預處理的所有情況,包括構建 C 檔案和彙編檔案。
KAFLAGS¶
彙編器的附加選項(用於內建和模組)。
AFLAGS_MODULE¶
模組的附加彙編器選項。
AFLAGS_KERNEL¶
內建模組的附加彙編器選項。
KCFLAGS¶
C 編譯器的附加選項(用於內建模組和模組)。
KRUSTFLAGS¶
Rust 編譯器的附加選項(用於內建模組和模組)。
CFLAGS_KERNEL¶
當使用 $(CC) 編譯作為內建程式碼編譯的程式碼時,要傳遞給 $(CC) 的附加選項。
CFLAGS_MODULE¶
用於 $(CC) 的附加模組特定選項。
RUSTFLAGS_KERNEL¶
當使用 $(RUSTC) 編譯作為內建程式碼編譯的程式碼時,要傳遞給 $(RUSTC) 的附加選項。
RUSTFLAGS_MODULE¶
用於 $(RUSTC) 的附加模組特定選項。
LDFLAGS_MODULE¶
連結模組時用於 $(LD) 的附加選項。
HOSTCFLAGS¶
構建主機程式時要傳遞給 $(HOSTCC) 的附加標誌。
HOSTCXXFLAGS¶
構建主機程式時要傳遞給 $(HOSTCXX) 的附加標誌。
HOSTRUSTFLAGS¶
構建主機程式時要傳遞給 $(HOSTRUSTC) 的附加標誌。
PROCMACROLDFLAGS¶
連結 Rust proc 宏時要傳遞的標誌。 由於 proc 宏在構建時由 rustc 載入,因此它們必須以與所使用的 rustc 工具鏈相容的方式連結。
例如,當 rustc 使用與使用者希望用於主機程式的 C 庫不同的 C 庫時,這可能很有用。
如果未設定,則預設為連結主機程式時傳遞的標誌。
HOSTLDFLAGS¶
構建主機程式時要傳遞的附加標誌。
HOSTLDLIBS¶
構建主機程式時要連結的附加庫。
USERCFLAGS¶
編譯 userprogs 時用於 $(CC) 的附加選項。
USERLDFLAGS¶
連結 userprogs 時用於 $(LD) 的附加選項。 userprogs 是使用 CC 連結的,因此 $(USERLDFLAGS) 應包含 “-Wl,” 字首(如果適用)。
KBUILD_KCONFIG¶
將頂級 Kconfig 檔案設定為此環境變數的值。 預設名稱為 “Kconfig”。
KBUILD_VERBOSE¶
設定 kbuild 的詳細程度。 可以分配與 “V=...” 相同的值。
有關完整列表,請參閱 make help。
設定 “V=...” 優先於 KBUILD_VERBOSE。
KBUILD_EXTMOD¶
設定在構建外部模組時查詢核心原始碼的目錄。
設定 “M=...” 優先於 KBUILD_EXTMOD。
KBUILD_OUTPUT¶
指定構建核心時的輸出目錄。
當針對單獨構建目錄中預構建的核心構建外部模組時,此變數也可用於指向核心輸出目錄。 請注意,這不指定外部模組本身的輸出目錄。(為此,請使用 KBUILD_EXTMOD_OUTPUT。)
輸出目錄也可以使用 “O=...” 指定。
設定 “O=...” 優先於 KBUILD_OUTPUT。
KBUILD_EXTMOD_OUTPUT¶
指定外部模組的輸出目錄。
設定 “MO=...” 優先於 KBUILD_EXTMOD_OUTPUT。
KBUILD_EXTRA_WARN¶
指定額外的構建檢查。 可以透過從命令列傳遞 W=... 來分配相同的值。
有關支援值的列表,請參閱make help。
設定 “W=...” 優先於 KBUILD_EXTRA_WARN。
KBUILD_DEBARCH¶
對於 deb-pkg 目標,允許覆蓋 deb-pkg 部署的正常啟發式演算法。 通常,deb-pkg 嘗試根據 UTS_MACHINE 變數以及某些架構上的核心配置來猜測正確的架構。 KBUILD_DEBARCH 的值被假定(未檢查)為有效的 Debian 架構。
KDOCFLAGS¶
指定構建期間核心文件檢查的額外(警告/錯誤)標誌,有關支援哪些標誌,請參閱 scripts/kernel-doc。 請注意,這(目前)不適用於文件構建。
ARCH¶
將 ARCH 設定為要構建的架構。
在大多數情況下,架構的名稱與 arch/ 目錄中找到的目錄名稱相同。
但是,某些架構(例如 x86 和 sparc)具有別名。
x86: i386 表示 32 位,x86_64 表示 64 位
parisc: parisc64 表示 64 位
sparc: sparc32 表示 32 位,sparc64 表示 64 位
CROSS_COMPILE¶
指定 binutils 檔名的可選固定部分。 CROSS_COMPILE 可以是檔名的一部分或完整路徑。
CROSS_COMPILE 也用於某些設定中的 ccache。
CF¶
sparse 的附加選項。
CF 通常在命令列上使用,如下所示
make CF=-Wbitwise C=2
INSTALL_PATH¶
INSTALL_PATH 指定將更新的核心和系統對映映像放置在何處。 預設為 /boot,但您可以將其設定為其他值。
INSTALLKERNEL¶
使用 “make install” 時呼叫的安裝指令碼。 預設名稱為 “installkernel”。
將使用以下引數呼叫該指令碼
$1 - 核心版本
$2 - 核心映像檔案
$3 - 核心對映檔案
$4 - 預設安裝路徑(如果為空,則使用根目錄)
“make install” 的實現特定於架構,並且可能與上述有所不同。
提供 INSTALLKERNEL 以便在交叉編譯核心時可以指定自定義安裝程式。
MODLIB¶
指定將模組安裝在何處。 預設值為
$(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE)
該值可以被覆蓋,在這種情況下,預設值將被忽略。
INSTALL_MOD_PATH¶
INSTALL_MOD_PATH 指定 MODLIB 的字首,用於構建根所需的模組目錄重定位。 這未在 Makefile 中定義,但如果需要,可以將引數傳遞給 make。
INSTALL_MOD_STRIP¶
如果定義了 INSTALL_MOD_STRIP,將導致模組在安裝後被剝離。 如果 INSTALL_MOD_STRIP 為 “1”,則將使用預設選項 --strip-debug。 否則,INSTALL_MOD_STRIP 值將用作 strip 命令的選項。
INSTALL_HDR_PATH¶
INSTALL_HDR_PATH 指定執行 “make headers_*” 時安裝使用者空間標頭檔案的位置。
預設值為
$(objtree)/usr
$(objtree) 是儲存輸出檔案的目錄。 輸出目錄通常使用命令列上的 “O=...” 設定。
該值可以被覆蓋,在這種情況下,預設值將被忽略。
INSTALL_DTBS_PATH¶
INSTALL_DTBS_PATH 指定安裝裝置樹 blob 的位置,用於構建根所需的重定位。 這未在 Makefile 中定義,但如果需要,可以將引數傳遞給 make。
KBUILD_ABS_SRCTREE¶
Kbuild 使用相對路徑來指向樹(如果可能)。 例如,在原始碼樹中構建時,原始碼樹路徑為 “.”。
設定此標誌會請求 Kbuild 使用原始碼樹的絕對路徑。 在某些情況下,這樣做很有用,例如,當生成帶有絕對路徑條目的標記檔案等時。
KBUILD_SIGN_PIN¶
如果私鑰需要密碼或 PIN 碼,則此變數允許將密碼或 PIN 碼傳遞給 sign-file 實用程式,以便在簽署核心模組時使用。
KBUILD_MODPOST_WARN¶
可以設定 KBUILD_MODPOST_WARN 以避免在最終模組連結階段出現未定義符號的錯誤。 它會將此類錯誤更改為警告。
KBUILD_MODPOST_NOFINAL¶
可以設定 KBUILD_MODPOST_NOFINAL 以跳過模組的最終連結。 這僅對於加速測試編譯有用。
KBUILD_EXTRA_SYMBOLS¶
對於使用來自其他模組的符號的模組。 有關更多詳細資訊,請參見構建外部模組。
ALLSOURCE_ARCHS¶
對於 tags/TAGS/cscope 目標,您可以指定要包含在資料庫中的多個架構,並用空格分隔。 例如
$ make ALLSOURCE_ARCHS="x86 mips arm" tags
要獲取所有可用的架構,您還可以指定 all。 例如
$ make ALLSOURCE_ARCHS=all tags
IGNORE_DIRS¶
對於 tags/TAGS/cscope 目標,您可以選擇哪些目錄不包含在資料庫中,並用空格分隔。 例如
$ make IGNORE_DIRS="drivers/gpu/drm/radeon tools" cscope
KBUILD_BUILD_TIMESTAMP¶
將此設定為日期字串會覆蓋 UTS_VERSION 定義中使用的時間戳(執行核心中的 uname -v)。 該值必須是可以傳遞給 date -d 的字串。 預設值是構建期間某個時刻的 date 命令的輸出。
KBUILD_BUILD_USER, KBUILD_BUILD_HOST¶
這兩個變數允許覆蓋啟動期間和 /proc/version 中顯示的user@host字串。 預設值分別是 whoami 和 host 命令的輸出。
LLVM¶
如果此變數設定為 1,則 Kbuild 將使用 Clang 和 LLVM 實用程式而不是 GCC 和 GNU binutils 來構建核心。