内核模块符号导出

简介: 内核模块符号导出

内核符号表引入

驱动程序可以编译成内核模块,也就是KO文件。每个KO文件是相互独立的,也就是说模块之间无法互相访问。但是在某些使用场、要互相访问,如B模块要用A模块中的函数。(B模块依赖于A模块)这时候我们要怎么做呢?

什么是符号表?

所谓“符号"就是内核中的函数名,全局变量名等。符号表就是用来记录这些“符号"的文件。

内核符号表导出

模块可以使用一下宏EXPORT_SYMBOL和EXPORT_SYMBOL_GPL导出符号到内核符号表中。

如:

EXPORT_SYMBOL(符号名);
EXPORT_SYMBOL_GPL(符号名);//只适用于包含GPL许可的模块。

导出去的符号可以被其他模块使用。使用前只需要声明一下即可。

实现

a.c

#include <linux/module.h>
#include <linux/init.h>
extern int add_test(int a,int b);
 int add_test(int a,int b){
    return (a+b);
}
EXPORT_SYMBOL(add_test);
static int hello_init(void){
    printk("hello init!!!\n");
    return 0;
}
static void hello_exit(void){
    printk("hello exit!!!\n");
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_AUTHOR("Paranoid");
MODULE_VERSION("V1.0");
MODULE_LICENSE("GPL");

查看符号表

编译被依赖的模块后,将生成的符号表文件复制到依赖模块所在文件夹,再编译另一个模块

b.c

#include <linux/module.h>
#include <linux/init.h>
extern int add_test(int a,int b);
static int hello_init(void){
    int a;
    a = add_test(1,2);
    printk("add:%d\n",a);
    printk("hello init!!!\n");
    return 0;
}
static void hello_exit(void){
    printk("hello exit!!!\n");
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_AUTHOR("Paranoid");
MODULE_VERSION("V1.0");
MODULE_LICENSE("GPL");

结果


目录
相关文章
|
7月前
|
编译器 程序员 C语言
【文件包含的本质、预处理符号、# vs ##】
【文件包含的本质、预处理符号、# vs ##】
|
3月前
crash —— 获取内核和模块的符号
crash —— 获取内核和模块的符号
|
6月前
|
Windows
【Windows内核驱动函数(1)】IoCreateSymbolicLink()-----创建符号链接函数
【Windows内核驱动函数(1)】IoCreateSymbolicLink()-----创建符号链接函数
|
7月前
如何快速找出文件夹里的全部带有符号&纯符号的文件
该内容引用了一篇关于如何查找文件夹中包含中文的文件的文章,并提到用户应根据自身需求调整相关设置。
|
7月前
|
NoSQL 编译器 vr&ar
GNU objcopy命令的探索:(转换二进制文件)
GNU objcopy命令的探索:(转换二进制文件)
373 1
|
7月前
3-3 51单片机头文件区分以及模板文件创建
3-3 51单片机头文件区分以及模板文件创建
60 0
|
7月前
|
算法 网络协议 Linux
Linux模块文件编译到内核与独立编译成.ko文件的方法
Linux模块文件编译到内核与独立编译成.ko文件的方法
1805 0
|
Linux Perl
Linux 中如何对变量进行切分截取?获取文件的扩展名
Linux 中如何对变量进行切分截取?获取文件的扩展名
120 0
|
Linux
通过sysfs文件系统接口来改变内核模块中的变量值(一)--通过fasync实现
通过sysfs文件系统接口来改变内核模块中的变量值(一)--通过fasync实现
104 0
|
Linux
内核模块的文件格式与EXPORT_SYMBOL的实现
内核模块的文件格式与EXPORT_SYMBOL的实现
136 0

热门文章

最新文章