linux 系統 ko模組編譯

2021-08-21 18:12:00 字數 1458 閱讀 9804

.c檔案如何編譯為ko的makefile檔案編寫

寫個my.c和乙個makefile檔案,然後make編譯一下,就成功了,生成my.ko

再載入一下insmod my.ko     dmesg|grep module 看到模組初始化時候的列印

解除安裝模組rmmod my.ko  dmesg|grep module  看模組解除安裝時候的列印

都是對的,看來以前學的東西還是記得了……再mark一下。

注意事項:

1、核心目錄

2、makefile中obj-m:=my.o 這個和原始檔my.c要對應

3、mymodule-objs:=module 這個my也是和my.c對應的

如果原始檔為your.c

這兩句話就應該改為obj-m:=your.o

yourmodule-objs:=module

4、檢視輸出的時候 用dmesg輸出資訊太多,可以用grep過濾一下

dmesg | grep "keywords"

核心原始檔

#include #include #include static int funcin(void)  

static void funcout(void)  

module_init(funcin);  

module_exit(funcout);  

module_license("gpl");  

module_author("elfy");

makefile 檔案

我linux核心目錄為/lib/modules/3.8.4/build

具體看自己機器的檔案

obj-m:=my.o  

mymodule-objs:=module   # 可以不用

kdir:=/lib/modules/$(shell uname -r)/build

make:=make  

default:  

$(make) -c $(kdir) subdirs=$(pwd) modules  

# rm -rf modules.order module.symvers .*.cmd *.o *.mod.c .tmp_versions *.unsigned

clean:  

$(make) -c $(kdir) subdirs=$(pwd) clean  

# rm -rf modules.order module.symvers .*.cmd *.o *.mod.c *.ko .tmp_versions *.unsigned

# 特別注意,需要tab來縮格

檢視:

insmod my.ko

mesg|grep module

rmmod my

mesg|grep module

dmesg|tail -100

linux 系統 ko模組編譯

今天整理以前筆記,發現曾經裡面有乙個makefile檔案。仔細一看是以前實習做linux核心程式設計時候寫的模組makefile。剛好我電腦也有linux系統,就拿來回顧一下。寫個my.c和乙個makefile檔案,然後make編譯一下,就成功了,生成my.ko 再載入一下insmod my.ko ...

Andriod編譯核心模組 ko

在單獨編譯android的核心模組之前,必須要成功配置編譯過整個android系統 至少要編譯成功boot.img 生成正確的out目錄。1.編寫makefile。按照以下格式編寫makefile。1 obj m aaa.o 2 obj m abc.o 3 abc objs aaa.o bbb.o ...

編譯驅動ko檔案

kern dir work system linux 3.4.2 all make c kern dir m pwd modules clean make c kern dir m pwd modules clean rm rf modules.order obj m hello.o c 選項的作用...