Skip to content
Advertisement

Linux kernel module compiling

I try to compile simple linux kernel module:

#include <linux/module.h>    
#include <linux/kernel.h>       

int init_module(void)
{
        printk("Hello world 1.n");
        return 0;
}

void cleanup_module(void)
{
        printk(KERN_ALERT "Goodbye world 1.n");
}

My makefile:

obj-m = testmodule.o
KVERSION = $(shell uname -r)
all:
        make -C /lib/modules/$(KVERSION)/build M=$(PWD) modules
clean:
        make -C /lib/modules/$(KVERSION)/build M=$(PWD) clean

Now i haven’t errors in my .c file.

But when i try make in terminal: make: Nothing to be done for `all’.

What’s wrong?

Thank you.

Advertisement

Answer

The default command in your makefile is

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

That instructs make to cd to /lib/modules/$(KVERSION)/build and run

make module m=YOUR_CURRENT_DIR

In turn, that makefile is not finding anything to do. Presumably, that makefile expects to find some particular structure in your current directory.

You need to more carefully read whatever instructions led you to set up this makefile.

User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement