|
我编了一个简单的内核模块
//helloworld.c
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/version.h>
int init_module(void)
{
printk("<1>Hello World!\n");
return 0;
}
void cleanup_module(void)
{
printk("<1>Goodbye");
}
我用gcc编译如下:
gcc -c -DMODULE -D__KERNEL__ -DLINUX helloworld.c
结果如下:
helloworld.c:18:1: warning: no newline at end of file
然后插入模块:
insmod helloworld.o
结果如下:
helloworld.o: kernel-module version mismatch
helloworld.o was compiled for kernel version 2.4.9-9
while this kernel is version 2.4.18-14.
如果我用参数 -f强行加载
insmod -f helloworld.0
结果如下:
Warning: kernel-module version mismatch
helloworld.o was compiled for kernel version 2.4.9-9
while this kernel is version 2.4.18-14
Warning: loading helloworld.o will taint the kernel: no license
See http://www.tux.org/lkml/#export-tainted for information about tainted modules
Warning: loading helloworld.o will taint the kernel: forced load
Module helloworld loaded, with warnings
之所以没有出现<1>Hello World!是因为没有在真正的终端运行.
我的问题是如果不强行使用-f ,应该怎么办?
我的系统:
gcc version 3.2 20020903 (Red Hat Linux 8.0 3.2-7) |
|