Linux:編譯產生核心模組(來自國嵌的視頻教學)

來源:互聯網
上載者:User

核心模組的代碼檔案

檔案 yyyy.c  (yyyy可以與模組xxxx同名也可以不同名)
(類似模板的東西) 
#ifndef __KERNEL__
#define __KERNEL__
#endif

#ifndef MODULE             //直接添加到核心時去掉,產生模組時保留
#define MODULE
#endif

 #include <*.h>

...

MODULE_LICENSE("GPL"); //許可證申明,用來告知核心,該模組帶有一個許可證
MODULE_AUTHOR("you name"); //作者申明(可選)
MODULE_DESCRIPTION("aaaa");//模組描述(可選)
MODULE_VERSION("V1.0"); //模組版本(可選)
MODULE_ALIAS("a bbbb module"); //模組別名(可選)

static  int  __inti  xxxx_init(void)
{
}

static  void  __inti  xxxx_exit(void)
{
}

... // 其他函數
...

module_init(xxxx_init);
module_exit(xxxx_exit);

核心編譯的Makefile

Makefile 
(類似模板的東西)
ifneq ($(KERNELRELEASE),)
obj-m := xxxx.o
xxxx-objs := yyyy.o  (如有其它源檔案繼續添加 zzzz.o  ...)(如yyyy = xxxx 且只有一個源檔案,該行可去掉)
 else
KDIR := /lib/module/2.6.28.6/build
all:
         make -C $(KDIR ) M=$(PWD)  modules
clean:
         rm  -f  *.ko  *.o  *.mod.o  *.mod.c  *.symvers
endif

其中 /lib/module/2.6.28.6/build 為建立核心代碼樹所產生的目錄,建立核心代碼數:

http://blog.csdn.net/leaglave_jyan/article/details/6652444

編輯好源檔案和Makefile後,該目錄下運行 make 即可編譯產生 模組 xxxx.ko 檔案

使用 insmod  xxxx.ko 添加

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.