红联Linux门户
Linux帮助

helloworld driver 之第32天

发布时间:2010-04-27 15:06:19来源:红联作者:bbjyczy
从我使用CROSSTOOL-0。43装好交叉编译环境以来,想做一个HELLOWORLD DRIVER。就是INSMOD的这种。这已经是第32天了。还是没有搞定。坚持下去。就是胜利。
文章评论

共有 3 条评论

  1. Creation 于 2010-04-27 16:28:31发表:

    我只想说,支持你

  2. bbjyczy 于 2010-04-27 16:16:48发表:

    insmod hello world driver
    C 文件
    hello world.c
    #include

    #include

    #include


    MODULE_LICENSE("Dual BSD/GPL");


    static int hello_init(void)

    {

    printk(KERN_ALERT"hello,world\n");

    return 0;

    }


    static void hello_exit(void)

    {

    printk(KERN_ALERT"Goodbye,cruel world\n");

    }



    module_init(hello_init);

    module_exit(hello_exit);


    MAKEFILE文件

    Makefile

    ifneq ($(KERNELRELEASE),)

    obj-m :=hello.o

    else

    KERNELDIR := /lib/modules/$(shell uname -r)/build

    PWD := $(shell pwd)


    default:

    $(MAKE) -C $(KERNELDIR) M=$(PWD) modules


    endif

    注意$(MAKE)用TAB制造空格。

    我花了很久才明白了 我的系统的LINUX内核,交叉编译的内核,交叉编译环境和系统上的GCC编译环境之间的关系。实际上是看了
    KERNELDIR := /lib/modules/$(shell uname -r)/build

    就明白了什么意思。

    如果我选择交叉编译的话。就应该将这个KERNELDIR 设置为ARM的内核了吧。

    这个问题困饶了我很多天。今天终于解决了。

  3. hantu 于 2010-04-27 15:33:59发表:

    再坚持,胜利不会远了。