生成.config
開啟.config檔案,發現該檔案是由以congig_***
形式的配置項組成的。
找到config_dm9000=y
行,config_dm9000
為乙個配置項,=y
表示編譯進核心,=m
表示編譯成模組,沒有配置顯示config_dm9000 is not set
。
我們在核心目錄中查詢:grep "config_dm9000" * -nrw
發現以下檔案中含有config_dm9000
:
c原始碼中的config_dm9000
子目錄makefile中的config_dm9000
include目錄中的config_dm9000
可以看到,config_dm9000
是include/linux/autoconf.h
中的乙個巨集定義,從名字可以看出該檔案是自動生成的,它由執行make
或make uimage
時根據.config
檔案生成的,定義為#define config_dm9000 = 1
。
也就是說不論.config
中定義config_dm9000=y
或config_dm9000=m
,autoconf.h
中始終=1
,該標頭檔案將給c原始碼中使用(見圖1)。
在子目錄makefile中(見圖1),obj -$(config_dm9000) +=dm9000.o
, 根據配置項obj -y +=dm9000.o
則該驅動編譯進核心;obj -m +=dm9000.o
則該驅動編譯為模組,生成***.ko。
可以看到,根據.config
檔案,make
或make uimage
時,分別生成:
include/linux/autoconf.h
,該標頭檔案中定義巨集config_dm9000
,被核心c原始碼使用。
include/config/auto.conf
,該檔案被頂級makefile包含,作為子目錄makefile的引數,用來指示構建系統編譯進核心還是模組。
= 是最基本的賦值
:= 是覆蓋之前的值
?= 是如果沒有被賦值過就賦予等號後面的值
+= 是新增等號後面的值
1、 「=」,make會將整個makefile展開後,再決定變數的值。也就是說,變數的值將會是整個makefile中最後被指定的值。看例子:
x = foo
y = $(x) bar
x = xyz
在上例中,y的值將會是 xyz bar ,而不是 foo bar 。
2、
「:=」,表示變數的值決定於它在makefile中的位置,而不是整個makefile展開後的最終值。
x := foo
y := $(x) bar
x := xyz
在上例中,y的值將會是 foo bar ,而不是 xyz bar 了。
22 linux的ssh互信配置
登陸伺服器a 建立ssh相關目錄 mkdir ssh 設定ssh的許可權 chmod 700 ssh 生成rsa公鑰 ssh keygen t rsa 請一直回車,直至提示結束 將公鑰 名為id rsa.pub檔案 追加到認證檔案 名為authorized keys檔案 中 cat ssh id r...
22 linux檔案屬性詳解
linux 檔案或目錄的屬性主要包括 檔案或目錄的 節點 種類 許可權模式 鏈結數量 所歸屬的使用者和使用者組 最近訪問或修改的時間 等內容。具體情況如下 命令 ls lih 輸出 root localhost test ls lih 總計 316k 2095120 lrwxrwxrwx 1 roo...
2 2 linux 常用命令
cp a b 解釋 複製 a 到 b rm a 解釋 刪除 a 3.1 新建乙個 nfsrootsudo mkdir nfsroot 3.2 設定許可權sudo chmod r 777 nfsroot 3.3 設定環境 sudo vi etc exports 開啟檔案 請在該檔案末尾新增下面的一行 ...