我刚开始学习linux设备驱动程序。我只是写了一个简单的设备驱动程序代码,并试图编译它,但当我做了一个make,我得到以下错误

make: Nothing to be done for `default'

这是我的设备驱动程序代码。
#include <linux/module.h>
#include <linux/version.h>
#include <linux/kernel.h>

MODULE_LICENSE("GPL");
MODULE_AUTHOR("Manoj");
MODULE_DESCRIPTION("My First Driver");

static int __init ofd_init ( void )    {

  printk (KERN_INFO "ofd registered");
  return 0;
}

static int __exit ofd_exit ( void ) {
  printk (KERN_INFO "ofd unregistered");
  return 0;
}

module_init ( ofd_init );
module _exit ( ofd_exit );

我的Makefile是这样的
# If KERNELRELEASE is defined, we've been invoked from the
# kernel build system and can use its language.
ifneq ($(KERNELRELEASE),)
   obj-m := hello.o

# Otherwise we were called directly from the command
# line; invoke the kernel build system.
else
  KERNELDIR := /lib/modules/$(shell uname -r)/build
  PWD  := $(shell pwd)

default:
  $(MAKE) -C $(KERNELDIR) M=$(PWD) modules

endif

在路径/lib/modules/3.2.0-58-generic-pae/build中也有。
有人能告诉我为什么这个特殊的文件不起作用吗?

最佳答案

obj-m:= hello.o
KVERSION = $(shell uname -r)
all:

    make -C /lib/modules/$(KVERSION)/build M=$(PWD) modules

干净:
    make -C /lib/modules/$(KVERSION)/build M=$(PWD) clean

在制造前-C按损失空间

关于c - 编译简单的设备驱动程序代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23455916/

10-11 16:36