Linux Kernel Makefile預設目標

2021-08-26 21:25:54 字數 947 閱讀 3700

inux核心的makefile也不是一般的麻煩。這裡結合makefile本身的用法對linux核心的makefile做一分析。

(1)入口點

預設的makefile的入口點是第一條規則。而linux核心的makefile的第一條規則是這樣的:

除去上面一長串賦值語句,來到:

phony := _all

_all:

是一條空規則。奇怪的是,下面不遠處有如下規則:

ifeq ($(kbuild_extmod),)

_all: all

else

_all: modules

endif

也就是說目標_all被寫了兩遍。

原因如下:一般makefile是不允許乙個目標被重複寫兩遍的,如:

a:echo a1

a:echo a2

這種情況會生成一條警告,說一條規則將被忽略。但如果第一條規則是一條空規則則是可以的,如:

a:a:

echo a2

而且還有如下用法:

b:echo b

a:echo a

此makefile如果直接make將會執行echo b,因為這是第一條規則,會被當成預設規則。但如果寫成下面的樣子:

a:b:

echo b

a:echo a

由於第一條空規則的存在,echo a會被當成預設規則執行。

因此linux核心中的makefile的_all可以做如下解釋:

真正的入口點是

ifeq ($(kbuild_extmod),)

_all: all

else

_all: modules

endif

這不必保證這幾行**是第一條規則,之前還可以插入任何內容,只需要保證空規則

_all:

是整個檔案的第一條規則,正真入口點處的規則便會被當成預設規則被執行。

Anaconda Jupyter 預設儲存目錄

預設儲存目錄 使用者資料夾,例如我的儲存目錄儲存在 c users administrator,要往下翻,不要看一眼就說沒有哦。更改預設儲存目錄 1 找到jupyter快捷方式,進入屬性,修改起始位置項 2 建立配置檔案,修改配置資訊 執行 jupyter notebook generate con...

centos 修改mysql的預設資料庫目錄

關於這個問題,網上說的內容很多,基本上可以解決問題,我現在分析的是為什麼要這麼操作,哪些操作是重複的!get mysql option get mysql option mysqld datadir var lib mysql datadir result get mysql option mysq...

Apache伺服器如何修改預設的檔案根目錄

當在瀏覽器輸入http localhost後apache預設提供的是 apache24 htdocs下的index.html檔案,想要將根目錄改為 apache24 web 首先,你得確保apache已經安裝好了 然後,開啟apache的配置檔案,在 apache24 conf下的httpd.con...