2 2 Linux核心配置分析 筆記

2021-08-26 20:27:34 字數 1849 閱讀 9127

生成.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_dm9000include/linux/autoconf.h中的乙個巨集定義,從名字可以看出該檔案是自動生成的,它由執行makemake uimage時根據.config檔案生成的,定義為#define config_dm9000 = 1

也就是說不論.config中定義config_dm9000=yconfig_dm9000=mautoconf.h中始終=1,該標頭檔案將給c原始碼中使用(見圖1)。

在子目錄makefile中(見圖1),obj -$(config_dm9000) +=dm9000.o, 根據配置項obj -y +=dm9000.o則該驅動編譯進核心;obj -m +=dm9000.o則該驅動編譯為模組,生成***.ko。

可以看到,根據.config檔案,makemake 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 開啟檔案 請在該檔案末尾新增下面的一行 ...