<dfn id="is4kg"></dfn>
  • <ul id="is4kg"></ul>
  • <abbr id="is4kg"></abbr>
  • <ul id="is4kg"></ul>
    <bdo id="is4kg"></bdo>
    以文本方式查看主題

    -  曙海教育集團論壇  (http://www.hufushizhe.com/bbs/index.asp)
    --  Linux驅動開發  (http://www.hufushizhe.com/bbs/list.asp?boardid=33)
    ----  Linux驅動開發學習筆記(1):LINUX驅動版本的hello world  (http://www.hufushizhe.com/bbs/dispbbs.asp?boardid=33&id=1728)

    --  作者:wangxinxin
    --  發布時間:2010-11-24 11:15:17
    --  Linux驅動開發學習筆記(1):LINUX驅動版本的hello world
     終于下決心好好學習LINUX內核和驅動開發了,不怕千萬人恥笑,勇敢將自己的學習過程寫出來:

    1、關于目錄
        /lib/modules/2.6.9-42.ELsmp/build/   這個是內核源碼所在的目錄
        一般使用這樣的命令進入這個目錄:cd /lib/modules/$(uname -r)/build/
       這個目錄實際上指向了:/usr/src/kernels/2.6.9-42.EL-smp-i686

    2、編譯驅動所使用的makefile
        實際上編譯驅動的時候是使用預先提供的一個makefile的,位置在:
    /lib/modules/$(uname -r)/build/Makefile
        注意:M是大寫的

    3、網上抄錄的Linux驅動Hello world的源碼:
    // hello.c
    #include <linux/init.h>
    #include <linux/module.h>

    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!\\n");
    }

    module_init(hello_init);
    module_exit(hello_exit);

    4、寫個makefile來編譯這個驅動:(版本一,最簡單的)
    #下面這行是文件Makefile的內容,注意M是大寫的
    obj-m := hello.o

    把hello.c和Makefile保存在同一目錄,然后執行:
    make -C /lib/modules/`uname -r`/build SUBDIRS=$PWD modules
    這樣驅動就編譯好了,成果是hello.ko文件。
    注意:makefile一定要寫成Makefile,如果寫成makefile就編譯不過。(折騰啊,就這一步耗了N多時間)

    5、再寫另一種Makefile:(版本二:最省事的)
    #以下是Makefile文件的內容
    obj-m := hello.o
    KERNEL_DIR := /lib/modules/$(shell uname -r)/build
    PWD := $(shell pwd)
    all:
        make -C $(KERNEL_DIR) SUBDIRS=$(PWD) modules
    clean:
        rm *.o *.ko

    然后執行:make就編譯成功了,命令行不再加參數,很省事。
    注意:all: 和clean:下面的行,前面是一個TAB鍵

    6、加載驅動:
    執行
    insmod ./hello.ko
    屏幕上沒反應。(因為我是在WINDOWS上用遠程終端連上去的嘛)
    OK,先讓時光倒流,回到加載驅動以前,先另開一個窗口,執行:
    tail -f /var/log/message
    然后在原來的窗口里執行:
    insmod ./hello.ko
    哈哈,/var/log/message文件里面看見了盼望已久的hello world!

    7、查看驅動:
    lsmod   看見 hello這個驅動在其中

    8、卸載驅動:
    rmmod hello
    看見/var/log/message里顯示了goodbye

    主站蜘蛛池模板: 日韩视频免费在线观看| 调教视频在线观看| 成人免费观看网欧美片| 亚洲国产精品线观看不卡| 男人桶女人视频不要下载| 国产寡妇偷人在线观看视频| aa级国产女人毛片水真多| 成人免费看黄20分钟| 五月天精品在线| 欧美日韩国产在线人成| 台湾佬中文娱乐11| 青青国产成人久久91| 国产精欧美一区二区三区| 中文国产成人精品久久水| 日本成本人三级在线观看2018| 亚洲欧美日韩人成在线播放| 男人资源在线观看| 国产va欧美va在线观看| 香蕉视频在线观看网址| 国产美女mm131爽爽爽毛片| 一本久久综合亚洲鲁鲁五月天| 放荡的闷骚娇妻h交换3p| 亚洲中文精品久久久久久不卡 | 老师办公室被吃奶好爽在线观看| 国产精品无码一本二本三本色| 一本大道无码人妻精品专区| 我被黑人巨大开嫩苞在线观看| 亚洲AV无码有乱码在线观看| 欧美午夜精品久久久久免费视| 免费一级毛片无毒不卡| 精品人妻伦一二三区久久| 国产国语在线播放视频| 黄页网址免费大全观看| 国产色无码精品视频免费| 一本大道无码日韩精品影视_| 成人中文字幕一区二区三区| 久久怡红院亚欧成人影院| 日韩精品无码一区二区三区四区| 亚洲欧美国产精品专区久久 | 国产高清一级伦理| 一个色综合高清在线观看|