从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. 先加载需要被依赖的模块,后卸载被依赖的模块