|
一个简单的驱动hello.c: (<Linux设备驱动程序>第二版P25)
#define MODULE
#include <linux/module.h>
init init_module(void){
printk ("<1>Hello");
return 0;
}
void cleanup_module(void){
printk("<1>Bye");
}
在RedHat9用gcc编译后可以 insmod,rmmod
上面的程序用arm-linux-gcc编译时,出现了几个问题:
(1)直接编译通不过 arm-linux-gcc -c hello.c 错误信息是parse error before "UTS_RELEASE"
(2)于是修改程序 先写#include ,再写#define MODULE
arm-linux-gcc -c hello.c 无错误信息出现了 (如果用arm-linux-gcc -c -D__KERNEL__ hello.c
编译还是会出现parse error before "UTS_RELEASE")
然后把hello.o下载到S3ceb2410的板上/tmp目录,执行insmod ./hello.o
错误信息为couldn"t find the kernel version the module was complier for
(3)按照网上的文章修改了version相关的一切,都不行.就是insmod不了
请问一下这究竟是什么回事啊?
我现在猜测是不是文件系统的原因,板上的linux内核是用make zImage做出来的(也不知道是什么文件系统)
是不是只有某种文件才能对模块 insmod rmmod?
各位的任何意见我都感谢啊)
#define MODULE
#include
init init_module(void){
printk ("<1>Hello");
return 0;
}
void cleanup_module(void){
printk("<1>Bye");
}
在RedHat9用gcc编译后可以 insmod,rmmod
上面的程序用arm-linux-gcc编译时,出现了几个问题:
(1)直接编译通不过 arm-linux-gcc -c hello.c 错误信息是parse error before "UTS_RELEASE"
(2)于是修改程序 先写#include ,再写#define MODULE
arm-linux-gcc -c hello.c 无错误信息出现了 (如果用arm-linux-gcc -c -D__KERNEL__ hello.c
编译还是会出现parse error before "UTS_RELEASE")
然后把hello.o下载到S32410的板上/tmp目录,执行insmod ./hello.o
错误信息为couldn"t find the kernel version the module was complier for
(3)按照网上的文章修改了version相关的一切,都不行.就是insmod不了
请问一下这究竟是什么回事啊?
我现在猜测是不是文件系统的原因,板上的linux内核是用make zImage做出来的(也不知道是什么文件系统)
是不是只有某种文件才能对模块 insmod rmmod?
各位的任何意见我都感谢啊 |
|