linux 系統 ko模組編譯

2021-06-22 00:30:29 字數 1362 閱讀 5200

今天整理以前筆記,發現曾經裡面有乙個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 選項的作用...