Skip to contentSkip to conversation

Error in Make for Kernel Module

DISCUSSION Arun M Kumar 2 participants 2 messages Jan 7, 2014

lore
Share & tools
lore
#0 lore raw

I am starting with Device Drivers for Linux

System Details:
Linux linux-nwya.site 3.10.25-2.10-desktop #2 SMP PREEMPT Tue Jan 7 00:25:03 IST 2014 i686 i686 i386 GNU/Linux

I created a Simple Hello_world Kernel Module. "Hello_World.c" //--------------------------------------------------------- /* My first kernel Module */

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

static init my_init(void){
         printk(KERN_ALERT "Hello World\n");
         return 0;
}
static void my_exit(void){
         printk(KERN_ALERT "Exit\n");
}

MODULE_LICENSE("GPL");
module_init(my_init);
module_exit(my_exit); //---------------------------------------------------------------------

The Makefile is as follows:
The file name is "Makefile" //--------------------------------------------------------------------- obj-m := Hello_World.o //---------------------------------------------------------------------

on running the make command i get the following error. //----------------------------------------------------------------------------
make: Entering directory `/home/arun/Linux_Source'

ERROR: Kernel configuration is invalid.
include/generated/autoconf.h or include/config/auto.conf are
missing.

          Run 'make oldconfig && make prepare' on kernel src to fix it.

make: *** No rule to make target `Device'. Stop.
make: Leaving directory `/home/arun/Linux_Source' //-------------------------------------------------------------------------------

I have tried "make prepare" but the issue remains.... any suggestions would be appreciated. Thanks in advance.

#1 lore raw
Quoted 47 lines

-----Original Message-----
From: kernelnewbies-bounces at kernelnewbies.org [mailto:kernelnewbies-bounces at kernelnewbies.org] On Behalf Of Arun M Kumar
Sent: Tuesday, January 07, 2014 1:25 PM
To: Kernel Newbies Mailing List
Subject: Error in Make for Kernel Module

I am starting with Device Drivers for Linux

System Details:
Linux linux-nwya.site 3.10.25-2.10-desktop #2 SMP PREEMPT Tue Jan 7 00:25:03 IST 2014 i686 i686 i386 GNU/Linux

I created a Simple Hello_world Kernel Module. "Hello_World.c" //--------------------------------------------------------- /* My first kernel Module */

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

static init my_init(void){
         printk(KERN_ALERT "Hello World\n");
         return 0;
}
static void my_exit(void){
         printk(KERN_ALERT "Exit\n");
}

MODULE_LICENSE("GPL");
module_init(my_init);
module_exit(my_exit); //---------------------------------------------------------------------

The Makefile is as follows:
The file name is "Makefile" //--------------------------------------------------------------------- obj-m := Hello_World.o //---------------------------------------------------------------------

on running the make command i get the following error. //----------------------------------------------------------------------------
make: Entering directory `/home/arun/Linux_Source'

ERROR: Kernel configuration is invalid.
include/generated/autoconf.h or include/config/auto.conf are
missing.

Quoted 9 lines
          Run 'make oldconfig && make prepare' on kernel src to fix it.

make: *** No rule to make target `Device'. Stop.
make: Leaving directory `/home/arun/Linux_Source' //-------------------------------------------------------------------------------

I have tried "make prepare" but the issue remains.... any suggestions would be appreciated. Thanks in advance.

You don't say whether you are attempting to build your module out of the kernel source tree or not. Assuming you are trying to build out of the tree, this is more or less what I do:

$ cat Makefile
all:
        make -C <path to top of kernel source tree you are building for> M=<path to directory your module source is in>

clean:
make -C <path to top of kernel source tree you are building for> M=<path to directory your module source is in> clean
$

$ cat Kbuild
obj-m += Hello_World.o
$

Your mileage may vary.

Good luck,

Jeff Haran