核心模組程式設計入門總結 1

2021-04-14 02:07:03 字數 721 閱讀 1830

1.出現編譯的模組不符合當前模組的問題:

原因:基本都是因為在用gcc編譯的時候加入了-i引數指定原始碼樹,但是所指定的版本和當前的核心版本衝突的問題。比如我碰到的是2.4.20-8custom(rh9.0自帶的核心**)的問題,和我們後來編譯的2.4.20-8的衝突。

解決:修正../include/linux/version.h 中的uts_release巨集的值為需要的值就可以了。當然這種方法只限於核心相差不大的情況。

2.模組的編譯問題:

情況描述:沒有仔細看清楚ldd的**直接使用module_init()函式,結果造成函式使用不正確。

解決方法:

應該說是描述模組的初始化。

模組必須的兩個標頭檔案,"kernel.h"主要是用到printk()等函式才包含。

模組的初始化函式定義必須是   int init_module(void){};

對應的退出函式是:void cleanup_module(void){};

如果還有需要再加上 module_license("gpl");

還有作者資訊: module_author(n);

3.system.map檔案的作用:

儲存核心函式符號位址,everytime you complie a new kernel, the addresses of various symbol names are bound to change.

ps:總結可能有誤,待後指出。 

核心模組程式設計入門之二

模組程式設計屬於核心程式設計,因此,除了對核心相關知識有所了解外,還需要了解與模組相關的知識。1 應用程式與核心模組的比較 為了加深對核心模組的了解,表一給出應用程式與核心模組程式的比較。表一 應用程式與核心模組程式的比較 c語言應用程式 核心模組程式 使用函式 libc庫 核心函式 執行空間 使用...

核心模組程式設計之入門(二) 必備知識

模組程式設計屬於核心程式設計,因此,除了對核心相關知識有所了解外,還需要了解與模組相關的知識。1 應用程式與核心模組的比較 為了加深對核心模組的了解,表一給出應用程式與核心模組程式的比較。表一 應用程式與核心模組程式的比較 c語言應用程式 核心模組程式 使用函式 libc庫 核心函式 執行空間 使用...

核心模組程式設計之入門(二) 必備知識

模組程式設計屬於核心程式設計,因此,除了對核心相關知識有所了解外,還需要了解與模組相關的知識。1 應用程式與核心模組的比較 為了加深對核心模組的了解,表一給出應用程式與核心模組程式的比較。表一 應用程式與核心模組程式的比較 c語言應用程式 核心模組程式 使用函式 libc庫 核心函式 執行空間 使用...