英語

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 來構建核心。