如何使用MODULE导出的涵数呢?
如下代码:
#include<linux/init.h>
#include<linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{printk(KERN_ALERT " Hello world enter\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "Hello world exit\n");
}
int add(int a,int b)
{return a+b;}
EXPORT_SYMBOL(add);
module_init(hello_init);
module_exit(hello_exit);
MODULE_AUTHOR("He Lun");
MODULE_DESCRIPTION(" A simple Hello World Module");
MODULE_ALIAS("a simplest module");
若想使用这个模块导出的ADD涵数应如何做呢?
#include<stdio.h>
int main()
{
printf("%d\n",add(1,2));
return 0;
}
这样系统会提示找不到ADD这个符号,小弟刚入门请高手指点。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
EXPORT_SYMBOL导出的符号是导出给其他内核模块使用的,不是导出给用户程序使用的。
要给用户程序使用,就得添加系统调用~
写个头文件,引用的时候包含这个头文件
二楼回答得不错,但是真的就不能给用户空间使用吗?三楼可以举个例子吗?谢谢
没办法给用户空间用,我以为你给其他模块用。
除非系统调用,或者驱动程序的方式,在内核间接调用
写个字符设备间接调用好了~
使用ioctl就可以调用到内核的函数。
还有很多内核与用户空间通信的方式,
最简单的就是proc。
linux不是uC/OS
谢谢emmoblin ,用ioctl可以明白,但是如何使用/proc,可以举个例子吗