linux内核模块编程之符号导出

本文介绍了一个简单的内核模块程序,该程序包含两个函数:add_integer 和 sub_integer,并演示了如何在另一个模块中调用这些函数。这是作者的第一个内核模块程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

很简单的一个程序,sub模块提供两个函数sub_integer,add_integer,并将其导出到内核符号表中,sub_test模块对这两个函数进行调用。这算是自己写的第一个内核模块程序吧,纪念一下.

sub.c:

 

 

#include<linux/init.h>
#include<linux/kernel.h>
#include<linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");

//int add_integar(int,int);
//int sub_integar(int,int);

int add_integer(int a,int b){

return a+b;
}

int sub_integer(int a,int b){

return a-b;
}

int __init mod_init(){
printk(KERN_ALERT "the first module program");
return 0;
}

void __exit mod_exit(){
printk(KERN_ALERT "i like u");
}
EXPORT_SYMBOL(add_integer);
EXPORT_SYMBOL(sub_integer);
module_init(mod_init);
module_exit(mod_exit);

 

 

sub_test.c:

 

 

#include<linux/module.h>
#include<linux/kernel.h>
#include<linux/init.h>
MODULE_LICENSE("Dual BSD/GPL");

extern int sub_integer(int,int);
extern int add_integer(int,int);

int __init test1(void){

int a=sub_integer(3,1);
int b=add_integer(2,2);
printk(KERN_ALERT"sub:%d/nadd:%d/n",a,b);
return 0;
}

void __exit test2(void){
printk(KERN_ALERT"bybye/n");
}

module_init(test1);
module_exit(test2);

 

 

对这两个函数的引用应该有比extern更好的方式,要是都extern就太麻烦了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值