mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* problems compiling kernel module
@ 2006-04-19 13:44 Fernando Barsoba
  2006-04-19 14:24 ` Erik Mouw
  2006-04-19 14:26 ` Arjan van de Ven
  0 siblings, 2 replies; 4+ messages in thread
From: Fernando Barsoba @ 2006-04-19 13:44 UTC (permalink / raw)
  To: linux-kernel

Hi,

I am really stuck with this thing.. For couple of days i have been 
trying to compile a kernel module. I have been following the info in 
http://www.faqs.org/docs/kernel/x204.html. But no success... i 
recompiled the latest kernel version, and i think i trying to compile 
the module against the source code for that kernel.. however, strange 
errors appear.

Please any help will be appreciated.

Here's the error:

Code:

[fbarsoba@localhost ~]$ cd workspace/kernel_tests/
[fbarsoba@localhost kernel_tests]$ make
gcc -O2 -DMODULE -D__KERNEL__ -W -Wall -Wstrict-prototypes 
-Wmissing-prototypes -isystem /lib/modules/`uname -r`/build/include -c 
-o hello-1.o hello-1.c
In file included from 
/lib/modules/2.6.16.7/build/include/linux/spinlock.h:87, from 
/lib/modules/2.6.16.7/build/include/linux/capability.h:45, from 
/lib/modules/2.6.16.7/build/include/linux/sched.h:7, from 
/lib/modules/2.6.16.7/build/include/linux/module.h:10, from hello-1.c:3:
/lib/modules/2.6.16.7/build/include/asm/spinlock.h: In function 
‘__raw_spin_lock’: 
/lib/modules/2.6.16.7/build/include/asm/spinlock.h:42: error: expected 
‘:’ or ‘)’ before ‘KBUILD_BASENAME’ 
/lib/modules/2.6.16.7/build/include/asm/spinlock.h: In function 
‘__raw_read_lock’: 
/lib/modules/2.6.16.7/build/include/asm/spinlock.h:96: error: expected 
‘:’ or ‘)’ before ‘KBUILD_BASENAME’ 
/lib/modules/2.6.16.7/build/include/asm/spinlock.h:96: error: expected 
expression before ‘else’ 
/lib/modules/2.6.16.7/build/include/asm/spinlock.h: In function 
‘__raw_write_lock’: 
/lib/modules/2.6.16.7/build/include/asm/spinlock.h:101: error: expected 
‘:’ or ‘)’ before ‘KBUILD_BASENAME’ 
/lib/modules/2.6.16.7/build/include/asm/spinlock.h:101: error: expected 
expression before ‘else’ In file included from 
/lib/modules/2.6.16.7/build/include/linux/sched.h:20, from 
/lib/modules/2.6.16.7/build/include/linux/module.h:10, from hello-1.c:3: 
/lib/modules/2.6.16.7/build/include/asm/semaphore.h: In function ‘down’: 
/lib/modules/2.6.16.7/build/include/asm/semaphore.h:112: error: expected 
‘:’ or ‘)’ before ‘KBUILD_BASENAME’ 
/lib/modules/2.6.16.7/build/include/asm/semaphore.h: In function 
‘down_interruptible’: 
/lib/modules/2.6.16.7/build/include/asm/semaphore.h:137: error: expected 
‘:’ or ‘)’ before ‘KBUILD_BASENAME’ 
/lib/modules/2.6.16.7/build/include/asm/semaphore.h: In function 
‘down_trylock’:/lib/modules/2.6.16.7/build/include/asm/semaphore.h:161: 
error: expected ‘:’ or ‘)’ before ‘KBUILD_BASENAME’ 
/lib/modules/2.6.16.7/build/include/asm/semaphore.h: In function ‘up’: 
/lib/modules/2.6.16.7/build/include/asm/semaphore.h:184: error: expected 
‘:’ or ‘)’ before ‘KBUILD_BASENAME’ make: *** [hello-1.o] Error 1


And here are the files:

Code:

/* hello-1.c - The simplest kernel module.
*/ #include <linux/module.h> /* Needed by all modules
*/ #include <linux/kernel.h> /* Needed for KERN_ALERT */

int init_module(void) {
printk("<1>Hello world 1.\n"); // A non 0 return means init_module 
failed; module can't be loaded.
return 0;
}

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


Code:

TARGET := hello-1
WARN := -W -Wall -Wstrict-prototypes -Wmissing-prototypes
INCLUDE := -isystem /lib/modules/`uname -r`/build/include
CFLAGS := -O2 -DMODULE -D__KERNEL__ ${WARN} ${INCLUDE} CC := gcc
${TARGET}.o: ${TARGET}.c
.PHONY: clean
clean: rm -rf {TARGET}.o



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: problems compiling kernel module
  2006-04-19 13:44 problems compiling kernel module Fernando Barsoba
@ 2006-04-19 14:24 ` Erik Mouw
  2006-04-19 14:59   ` Fernando Barsoba
  2006-04-19 14:26 ` Arjan van de Ven
  1 sibling, 1 reply; 4+ messages in thread
From: Erik Mouw @ 2006-04-19 14:24 UTC (permalink / raw)
  To: Fernando Barsoba; +Cc: linux-kernel

On Wed, Apr 19, 2006 at 09:44:08AM -0400, Fernando Barsoba wrote:
> I am really stuck with this thing.. For couple of days i have been 
> trying to compile a kernel module. I have been following the info in 
> http://www.faqs.org/docs/kernel/x204.html. But no success... i 
> recompiled the latest kernel version, and i think i trying to compile 
> the module against the source code for that kernel.. however, strange 
> errors appear.

That way just doesn't work. Use kbuild instead of brewing your own
Makefiles. See http://lwn.net/Articles/21823/ .

> And here are the files:
> 
> Code:
> 
> /* hello-1.c - The simplest kernel module.
> */ #include <linux/module.h> /* Needed by all modules

Not necessary, IIRC.

> */ #include <linux/kernel.h> /* Needed for KERN_ALERT */

OK...

> int init_module(void) {
> printk("<1>Hello world 1.\n"); // A non 0 return means init_module 

... so why don't you use KERN_ALERT instead of <1>?

Make that printk(KERN_ALERT "Hello, world!\n");

> failed; module can't be loaded.
> return 0;
> }
> 
> void cleanup_module(void) {
> printk(KERN_ALERT "Goodbye world 1.\n");
> }
> 
> 
> Code:
> 
> TARGET := hello-1
> WARN := -W -Wall -Wstrict-prototypes -Wmissing-prototypes
> INCLUDE := -isystem /lib/modules/`uname -r`/build/include
> CFLAGS := -O2 -DMODULE -D__KERNEL__ ${WARN} ${INCLUDE} CC := gcc
> ${TARGET}.o: ${TARGET}.c
> .PHONY: clean
> clean: rm -rf {TARGET}.o

You want something like:

ifneq ($(KERNELRELEASE),)
obj-m	:= hello.o
else
KDIR	:= /lib/modules/$(shell uname -r)/build
PWD		:= $(shell pwd)

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


Erik

-- 
+-- Erik Mouw -- www.harddisk-recovery.com -- +31 70 370 12 90 --
| Lab address: Delftechpark 26, 2628 XH, Delft, The Netherlands

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: problems compiling kernel module
  2006-04-19 13:44 problems compiling kernel module Fernando Barsoba
  2006-04-19 14:24 ` Erik Mouw
@ 2006-04-19 14:26 ` Arjan van de Ven
  1 sibling, 0 replies; 4+ messages in thread
From: Arjan van de Ven @ 2006-04-19 14:26 UTC (permalink / raw)
  To: Fernando Barsoba; +Cc: linux-kernel

On Wed, 2006-04-19 at 09:44 -0400, Fernando Barsoba wrote:
> 
> 
> I am really stuck with this thing.. For couple of days i have been 
> trying to compile a kernel module. I have been following the info in 
> http://www.faqs.org/docs/kernel/x204.html. But no success... i 
> recompiled the latest kernel version, and i think i trying to compile 

your makefile is bust; please read Documentation/kbuild for a 2.6 level
makefile (yours is a bad job even for 2.4 kernels but it'll more or less
work there)



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: problems compiling kernel module
  2006-04-19 14:24 ` Erik Mouw
@ 2006-04-19 14:59   ` Fernando Barsoba
  0 siblings, 0 replies; 4+ messages in thread
From: Fernando Barsoba @ 2006-04-19 14:59 UTC (permalink / raw)
  Cc: linux-kernel

Thanks a lot for your makefile. It worked nicely. I wasn't sure if the 
question was too basic for this mailing list.

Thanks also for Arjan's reference to 
http://fxr.watson.org/fxr/source/Documentation/kbuild/makefiles.txt?v=linux-2.6.9

I am new in kernel programming...

tnx,
Fernando

>From: Erik Mouw <erik@harddisk-recovery.com>
>To: Fernando Barsoba <fbarsoba@hotmail.com>
>CC: linux-kernel@vger.kernel.org
>Subject: Re: problems compiling kernel module
>Date: Wed, 19 Apr 2006 16:24:42 +0200
>
>On Wed, Apr 19, 2006 at 09:44:08AM -0400, Fernando Barsoba wrote:
> > I am really stuck with this thing.. For couple of days i have been
> > trying to compile a kernel module. I have been following the info in
> > http://www.faqs.org/docs/kernel/x204.html. But no success... i
> > recompiled the latest kernel version, and i think i trying to compile
> > the module against the source code for that kernel.. however, strange
> > errors appear.
>
>That way just doesn't work. Use kbuild instead of brewing your own
>Makefiles. See http://lwn.net/Articles/21823/ .
>
> > And here are the files:
> >
> > Code:
> >
> > /* hello-1.c - The simplest kernel module.
> > */ #include <linux/module.h> /* Needed by all modules
>
>Not necessary, IIRC.
>
> > */ #include <linux/kernel.h> /* Needed for KERN_ALERT */
>
>OK...
>
> > int init_module(void) {
> > printk("<1>Hello world 1.\n"); // A non 0 return means init_module
>
>... so why don't you use KERN_ALERT instead of <1>?
>
>Make that printk(KERN_ALERT "Hello, world!\n");
>
> > failed; module can't be loaded.
> > return 0;
> > }
> >
> > void cleanup_module(void) {
> > printk(KERN_ALERT "Goodbye world 1.\n");
> > }
> >
> >
> > Code:
> >
> > TARGET := hello-1
> > WARN := -W -Wall -Wstrict-prototypes -Wmissing-prototypes
> > INCLUDE := -isystem /lib/modules/`uname -r`/build/include
> > CFLAGS := -O2 -DMODULE -D__KERNEL__ ${WARN} ${INCLUDE} CC := gcc
> > ${TARGET}.o: ${TARGET}.c
> > .PHONY: clean
> > clean: rm -rf {TARGET}.o
>
>You want something like:
>
>ifneq ($(KERNELRELEASE),)
>obj-m	:= hello.o
>else
>KDIR	:= /lib/modules/$(shell uname -r)/build
>PWD		:= $(shell pwd)
>
>default:
>	$(MAKE) -C $(KDIR) M=$(PWD) modules
>endif
>
>
>Erik
>
>--
>+-- Erik Mouw -- www.harddisk-recovery.com -- +31 70 370 12 90 --
>| Lab address: Delftechpark 26, 2628 XH, Delft, The Netherlands
>-
>To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
>the body of a message to majordomo@vger.kernel.org
>More majordomo info at  http://vger.kernel.org/majordomo-info.html
>Please read the FAQ at  http://www.tux.org/lkml/



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2006-04-19 15:00 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-04-19 13:44 problems compiling kernel module Fernando Barsoba
2006-04-19 14:24 ` Erik Mouw
2006-04-19 14:59   ` Fernando Barsoba
2006-04-19 14:26 ` Arjan van de Ven

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®