从0学Linux驱动-符号导出 6


从0学Linux驱动-符号导出 6

作者网站:https://blog.csdn.net/daocaokafei/article/details/108513929


编译的时候一定要注意Makefile,经常用Android Studio,编译器会帮助检查拼写错误。但是现在基本没有啥提示。所以细心检查不要出现编写错误。能COPY不自己写。我这一贯的Ctrl C大师。

EXPORT_SYMBOL(version_code); 提供给外部需要Module访问

sudo dmesg -C 清除dmesg信息

#include<linux/init.h>
#include<linux/module.h>
//use static or no static all OK.
 int version_code =100;
static void show_version_code(void)
{
    printk("Version code:%d,\n" ,version_code);
}

static int  uid =199;
static int init_module_supper(void)
{
    printk("init module supper\n");
    return 0;
}

static void exit_module_supper(void)
{
    printk("exit module supper\n");

}

MODULE_LICENSE("GPL");

EXPORT_SYMBOL(version_code);
EXPORT_SYMBOL(show_version_code);
EXPORT_SYMBOL(uid);
module_init(init_module_supper);
module_exit(exit_module_supper);

无论是不是static都是可以被使用模块访问,并且可以修改值



从编译提示来说使用EXPORT_SYMBOL 不推荐使用staic。虽然可以编译通过也可以正常使用,但是我们尽量要遵守规范



https://github.com/jiahengcen/LinuxCode/tree/master/export

总结:
1. sudo dmesg -C 清除dmesg信息
2. 使用EXPORT_SYMBOL共享模块内方法与变量
3. export方法变量尽量不用使用staic
4. 先加载需要被依赖的模块,后卸载被依赖的模块

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容