回覆列表
-
1 # 使用者4044295222555
-
2 # 使用者1465424935672
編譯還是用 gcc編譯,make只是根據檔案依賴的關係,構建出一個DAG,然後按照拓撲排序的順序,編譯原始檔,如果原始檔比它的依賴檔案老,則會自動編譯。make不是編譯器,它只是呼叫gcc自動完成編譯,省得你一行行的敲gcc命令。尤其是大型工程,需要這種自動編譯的工具。理解了嗎?
Lsmod透過讀取/proc/modules檔案的內容來檢視核心已經載入了哪些核心模組。作業系統核心需要的擴充套件功能不存在時,核心模組管理守護程序kmod執行modprobe去載入核心模組。當傳遞給modprobe是通用識別符時,modprobe首先在檔案 /etc/modules。
conf查詢該字串。然後,modprobe遍歷檔案/lib/modules/version/modules。dep 來判斷是否有其它核心模組需要在該模組載入前被載入。該檔案是由命令depmod -a 建立,儲存著核心模組的依賴關係。最終,modprobe呼叫insmod先載入被依賴的模組,然後載入該被核心要求的模組。
modprobe將insmod向 /lib/modules/version/[1]目錄,該目錄為預設標準存放核心模組的目錄。所以,當你想要載入一個核心模組時,你可以執行:insmod /lib/modules/2。5。1/kernel/fs/fat/fat。
oinsmod /lib/modules/2。5。1/kernel/fs/msdos/msdos。o或只是執行"modprobe -a msdos"。Linux提供modprobe, insmod and depmod在一個名為modutils 或 mod-utils的工具包內。
為某個版本編譯的模組將不能被另一個版本的核心載入如果核心中打開了CONFIG_MODVERSIONS選項。目前絕大多數的發行版是將該選項開啟的。如果你在修改核心,為避免覆蓋你現在工作的模組,你應該試試使用核心Makefile中的變數EXTRAVERSION去建立一個獨 立的模組目錄。
。