今天整理以前筆記,發現曾經裡面有乙個makefile檔案。
仔細一看是以前實習做linux核心程式設計時候寫的模組makefile。剛好我電腦也有linux系統,就拿來回顧一下。
寫個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"
核心原始檔
[cpp]view plain
copy
#include
#include
#include
static
intfuncin(
void
)
static
void
funcout(
void
)
module_init(funcin);
module_exit(funcout);
module_license("gpl"
);
module_author("elfy"
);
makefile 檔案
我linux核心目錄為/lib/modules/2.6.31-14-generic/build
具體看自己機器的檔案
[cpp]view plain
copy
obj-m:=my.o
mymodule-objs:=module
kdir:=/lib/modules/2.6.31-14-generic/build
make:=make
default
: $(make) -c $(kdir) subdirs=$(pwd) modules
clean:
$(make) -c $(kdir) subdirs=$(pwd) clean
linux 系統 ko模組編譯
c檔案如何編譯為ko的makefile檔案編寫 寫個my.c和乙個makefile檔案,然後make編譯一下,就成功了,生成my.ko 再載入一下insmod my.ko dmesg grep module 看到模組初始化時候的列印 解除安裝模組rmmod my.ko dmesg grep modu...
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 選項的作用...