On Tue, Jul 2, 2013 at 9:07 AM, David kiarie <davidkiarie4@xxxxxxxxx> wrote: > Hi everybody, > I currently started learning how to write Linux drivers.I am following Linux > Device Drivers Third Edition. > I have everything set right but the makefile provided seem not to work.I am > familiar with makefiles but the kernel build system confuses me > Here is the 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 > It give the following output when I run make : > > make: Nothing to be done for `default'. I guess you see ifneq($(KERNELRELEASE),). And you see that the "default:" statement is in the else clause of the if. Thus I am guessing that you are invoking the makefile by hand and you have the KERNELRELEASE variable set. The logic used above requires KERNELRELEASE _not_ be defined when manually invoking the makefile. It should _only_ be set when invoked by the kernel's overall build system which will set it internally. Greg _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies