.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 選項的作用...