insmod:插入"wordc.ko"时出错:-1 模块中的未知符号



我试图写一个简单的内核驱动程序,但我发现一些问题,我无法解决它。,

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_successn");
    return 0;
}
//退出Linux驱动
static void word_count_exit(void)
{
  printk("word_count_exit_successn");
}
// 注册初始化Linux驱动的函数
module_init(word_count_init);
// 注册推出Linux驱动的函数
module_exit(word_count_exit);
MODULE_LICENSE("GPL");

Makefile:

    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'

警告"mount",任何人都可以告诉我如何解决它。然后,我使用"insmod world"。Ko ",失败了,

insmod: error inserting 'wordc.ko': -1 Unknown symbol in module

我想我已经找到问题并解决了。原因来自于GCC的版本。我的gcc版本是4.4.7,当我把它改成4.8时,

最新更新