module 制作 编译 脚本

-------------------------------hello.c-----------------------------------------
#include <linux/module.h>
#include <linux/init.h>

MODULE_LICENSE("GPL");
MODULE_AUTHOR("hgj Xie");
MODULE_DESCRIPTION("Hello World Module");
MODULE_ALIAS("a simplest module");

extern int add_integar(int a,int b); 
extern int sub_integar(int a,int b);

stastatic char *name = "David Xie";              
static int age = 30;    


module_param(age, int, S_IRUGO);                                
module_param(name, charp, S_IRUGO);                             
static int __init hello_init()
{
    int res = add_integar(1,2);
    return 0;
}

static void __exit hello_exit()
{
    int res = sub_integar(2,1);
}

module_init(hello_init);
module_exit(hello_exit);



-------------------------------calculate.c-----------------------------------------
#include <linux/init.h>                                

#include <linux/module.h> 
                               
MODULE_LICENSE("GPL");                                
                                
int add_integar(int a,int b)                                
{                                
	return a+b;                             
} 
                               
int sub_integar(int a,int b)                                
{                                
	return a-b;                             
}                            

static int __init sym_init()
{
    return 0;
}

static void __exit sym_exit()
{

}

module_init(sym_init);
module_exit(sym_exit);

/* EXPORT_SYMBOL(add_integar); */
/* EXPORT_SYMBOL(sub_integar); */






----------------------------------------makefile ----------------------------------------------------------------------------------------------------------------------------

ifneq ($(KERNELRELEASE),)


obj-m := hello.o calculate.o
hello-objs : =file1.o hello.o

else

KDIR :=  /ext/myandroid_sabrelite/android-imx6-r13.3/kernel_imx
all:
make -C $(KDIR) M=$(PWD) modules ARCH=arm CROSS_COMPILE=/ext/myandroid_sabrelite/android-imx6-r13.3/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi- 
clean:
rm -f *.ko *.o *.mod.o *.mod.c *.symvers


endif


//这里这个脚本必须命名为makefile 

//这个脚本是编译2个ko文件。hello模块有2个源文件

----------------------------------------------------------------------------------

S_IRUGO 任何用户都对/sys/module中出现的参与有读权限

S_IWUSR 允许root 修改在/sys/module中的该参数

1|root@android:/sys/module # cd hello/parameters/
root@android:/sys/module/hello/parameters # ll
-r--r--r-- root     root         4096 1970-01-02 01:44 age
-r--r--r-- root     root         4096 1970-01-02 01:44 name
root@android:/sys/module/hello/parameters #


root@android:/sdcard/mine # insmod calculate.ko
calculate.c:sym_init
root@android:/sdcard/mine # lsmod
calculate 755 0 - Live 0xbf006000
hid_multitouch 7772 0 - Live 0xbf000000
root@android:/sdcard/mine # insmod hello.ko
calculate.c:add_integar
Hello init
root@android:/sdcard/mine # rm hello.ko
root@android:/sdcard/mine # rmmod hello
Hello exit!
root@android:/sdcard/mine # rmmod calculate
calculate.c:sym_exit
root@android:/sdcard/mine #


root@android:/sdcard/mine # insmod hello.ko age=50

使用

-------------------------------



modprobe  会自动先安装依赖的模块,根据/lib/modules/$version/modules.dep来查阅依赖关系。这个文件是编译内核时自动生成的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值