嵌入式开发第64日(内核模块的依赖)

内核模块依赖

一个模块使用了另一个模块的变量或者函数,第一个模块就依赖于第二个模块


#include <linux/init.h>
#include <linux/module.h>

MODULE_LICENSE("GPL v2");

extern int test_mul(int,int);//外部声明,就可以调用了
extern int test_div(int,int);

int __init import_init(void)
{
	int result = 0;
	printk("enter import_init!\n");
	result = test_mul(10, 20);
	printk("result = %d\n",result);

	return 0;
}

void __exit import_exit(void)
{
	int result = 0;
	printk("enter import_exit!\n");
	result = test_div(15, 3);
	printk("result = %d\n",result);
}

module_init(import_init);
module_exit(import_exit);



模块的导出符号

如果一个模块中的变量或者函数希望被别的模块使用,需要将对应的变量或者函数导出
EXPORT_SYMBOL:导出的内容所有模块都能使用
EXPORT_SYMBOL_GPL:导出的内容只有遵循GPL协议的模块才能使用

所以模块编程是一定要添加

MODULE_LICENSE("GPL v2");


#include <linux/init.h>
#include <linux/module.h>

MODULE_LICENSE("GPL v2");

int test_mul(int x,int y)
{
	printk("enter test_mul!\n");
	return x*y;
}

int test_div(int x,int y)
{
	printk("enter test_div!\n");
	return x/y;
}

/*内核导出符号*/
EXPORT_SYMBOL(test_mul);
EXPORT_SYMBOL_GPL(test_div);


tips:

1)在使用insmod安装模块的时候 也要先安装依赖文件,不然外部声明会报错。

2)模块函数被别的模块所使用的时候,不能被卸载。

3)modprode安装模块会自动把依赖模块自动加载到上去,当然前提是依赖模块是已经安装好的。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

交叉编译之王 hahaha

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值