我正在尝试编写一个简单的内核驱动程序,但我找到一些我无法解决的问题。关注,
wordc.c:
#include <linux/module.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/fs.h>
#include <linux/miscdevice.h>
#include <asm/uaccess.h>
static int word_count_init(void)
{
printk("word_count_init_success\n");
return 0;
}
//退出Linux驱动
static void word_count_exit(void)
{
printk("word_count_exit_success\n");
}
// 注册初始化Linux驱动的函数
module_init(word_count_init);
// 注册推出Linux驱动的函数
module_exit(word_count_exit);
MODULE_LICENSE("GPL");
生成文件:
ifneq ($(KERNELRELEASE),)
obj-m := wordc.o
else
KERNELDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
clean:
rm -f *.o *.mod.c *.mod.o *.ko
endif
当我尝试制作时,会显示
make: Entering directory `/usr/src/linux-headers-3.11.0-20-generic'
LD /android_src/drivers/ch06/built-in.o
CC [M] /android_src/drivers/ch06/wordc.o
Building modules, stage 2.
MODPOST 1 modules
WARNING: "mcount" [/android_src/drivers/ch06/wordc.ko] undefined!
CC /android_src/drivers/ch06/wordc.mod.o
LD [M] /android_src/drivers/ch06/wordc.ko
make: Leaving directory `/usr/src/linux-headers-3.11.0-20-generic'
警告“mcount”,任何人都可以告诉我如何解决它。 然后,我使用“insmod wordc.ko”,我失败了,
insmod: error inserting 'wordc.ko': -1 Unknown symbol in module
答案 0 :(得分:0)
我想我找到了问题并解决了它。 原因来自海湾合作委员会的版本。 我的gcc版本是4.4.7,当我把它改为4.8时, 所有问题都被驳回了。