----my1.c----- #ifndef __KERNEL__ # define __KERNEL__ #endif #ifndef MODULE # define MODULE #endif
#include <linux/kernel.h> #include <linux/module.h> #include <linux/init.h>
int a = 2012; EXPORT_SYMBOL(a); int __init my_init(void) { printk("Hello %d!\n",a); return 0; }
void __exit my_exit(void) { printk("Hello Exit!\n"); }
module_init(my_init); module_exit(my_exit);
----my2.c----- #ifndef __KERNEL__ # define __KERNEL__ #endif #ifndef MODULE # define MODULE #endif
#include <linux/kernel.h> #include <linux/module.h> #include <linux/init.h>
extern int a; int __init my_init(void) { printk("This is mod2 ,Hello %d!\n",a); return 0; }
void __exit my_exit(void) { printk("mod2 Exit!\n"); }
module_init(my_init); module_exit(my_exit);
说明: 在my1.c中导出的符号a,可以在my2.c中访问。
注意: 1 修改module后需要先rmmod后再insmod。 2 需要先insmod my1.ko 再insmod my2.ko 3 insmod my2.ko时提示错误Unknown symbol in module,请确认my1.ko已经insmod了。 我在修改了my1.c后,只make了而忘了insmod一直出错。 |