如何使用MODULE导出的涵数呢?

发布于 2022-09-18 18:59:47 字数 838 浏览 19 评论 0

如下代码:
#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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

护你周全 2022-09-25 18:59:47

EXPORT_SYMBOL导出的符号是导出给其他内核模块使用的,不是导出给用户程序使用的。
要给用户程序使用,就得添加系统调用~

小糖芽 2022-09-25 18:59:47

写个头文件,引用的时候包含这个头文件

清风不识月 2022-09-25 18:59:47

二楼回答得不错,但是真的就不能给用户空间使用吗?三楼可以举个例子吗?谢谢

苯莒 2022-09-25 18:59:47

没办法给用户空间用,我以为你给其他模块用。
除非系统调用,或者驱动程序的方式,在内核间接调用

蘑菇王子 2022-09-25 18:59:47

写个字符设备间接调用好了~

梦中的蝴蝶 2022-09-25 18:59:47

使用ioctl就可以调用到内核的函数。
还有很多内核与用户空间通信的方式,
最简单的就是proc。

我一直都在从未离去 2022-09-25 18:59:47

linux不是uC/OS

酒绊 2022-09-25 18:59:47

谢谢emmoblin ,用ioctl可以明白,但是如何使用/proc,可以举个例子吗

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文