<dfn id="is4kg"></dfn>
  • <ul id="is4kg"></ul>
  • <abbr id="is4kg"></abbr>
  • <ul id="is4kg"></ul>
    <bdo id="is4kg"></bdo>

    曙海教育集團論壇Linux專區Linux驅動開發 → Linux驅動開發學習筆記(1):LINUX驅動版本的hello world


      共有8601人關注過本帖樹形打印

    主題:Linux驅動開發學習筆記(1):LINUX驅動版本的hello world

    美女呀,離線,留言給我吧!
    wangxinxin
      1樓 個性首頁 | 博客 | 信息 | 搜索 | 郵箱 | 主頁 | UC


    加好友 發短信
    等級:青蜂俠 帖子:1393 積分:14038 威望:0 精華:0 注冊:2010-11-12 11:08:23
    Linux驅動開發學習筆記(1):LINUX驅動版本的hello world  發帖心情 Post By:2010-11-24 11:15:17

     終于下決心好好學習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

    支持(0中立(0反對(0單帖管理 | 引用 | 回復 回到頂部

    返回版面帖子列表

    Linux驅動開發學習筆記(1):LINUX驅動版本的hello world








    簽名
    主站蜘蛛池模板: 无码人妻一区二区三区免费视频 | www.亚洲色图| 日本精品啪啪一区二区三区| 亚洲自偷精品视频自拍| 精品综合久久久久久8888| 国产精品久久毛片| 一区二区三区无码高清视频| 无遮挡1000部拍拍拍免费凤凰| 亚洲日韩欧美一区二区三区在线 | 综合激情区视频一区视频二区| 国产精品xxxx国产喷水| t66y最新地址一地址二地址三| 成年网站在线看| 亚洲一区二区三区在线| 欧美第一页在线| 北条麻妃作品在线观看| 色屁屁www欧美激情在线观看 | 欧美多人换爱交换乱理伦片| 免费黄网站在线看| 美女视频黄视大全视频免费的| 国产真实乱子伦精品视频| h无遮挡男女激烈动态图| 思思99re热| 久久精品99久久香蕉国产| 欧美videos另类极品| 人人妻人人澡人人爽人人精品 | 国产裸拍裸体视频在线观看| 三上悠亚精品二区在线观看| 无码一区二区三区中文字幕| 亚洲专区第一页| 欧美午夜艳片欧美精品| 伊人久久波多野结衣中文字幕| 精品免费人成视频APP| 国产又爽又黄无码无遮挡在线观看| 56prom在线精品国产| 国内剧果冻传媒在线观看网站| 丁香六月在线观看| 成人妇女免费播放久久久| 久久精品国产99精品最新| 暖暖免费高清日本一区二区三区| 亚洲欧美成人中文在线网站|