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...