greg.freemyer at gmail.com
Tue Jul 2 09:31:30 EDT 2013
On Tue, Jul 2, 2013 at 9:07 AM, David kiarie <davidkiarie4 at gmail.com> 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.
> KERNELDIR ?= /lib/modules/$(shell uname -r)/build
> PWD := $(shell pwd)
> $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
> 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.
More information about the Kernelnewbies