lkml.org 
[lkml]   [2006]   [Apr]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: problems compiling kernel module
    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/

    \
     
     \ /
      Last update: 2006-04-19 16:27    [W:0.025 / U:0.752 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site