开心六月综合激情婷婷|欧美精品成人动漫二区|国产中文字幕综合色|亚洲人在线成视频

    1. 
      
        <b id="zqfy3"><legend id="zqfy3"><fieldset id="zqfy3"></fieldset></legend></b>
          <ul id="zqfy3"></ul>
          <blockquote id="zqfy3"><strong id="zqfy3"><dfn id="zqfy3"></dfn></strong></blockquote>
          <blockquote id="zqfy3"><legend id="zqfy3"></legend></blockquote>
          打開APP
          userphoto
          未登錄

          開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

          開通VIP
          Linux驅(qū)動(dòng)開發(fā)環(huán)境配置(內(nèi)核源碼樹構(gòu)造)

          Linux驅(qū)動(dòng)開發(fā)環(huán)境配置(內(nèi)核源碼樹構(gòu)造)

          初次接觸Linux驅(qū)動(dòng)程序開發(fā),買了一本《Linux設(shè)備驅(qū)動(dòng)程序》,第一件事當(dāng)然就是構(gòu)建開發(fā)環(huán)境了?。?!

          它上面有一個(gè)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, cruel world/n");
          }

          module_init(hello_init);
          module_exit(hello_exit);

          下面我們來看怎么讓它跑起來:

          驅(qū)動(dòng)程序和用戶程序可不一樣,它是作為一個(gè)模塊連接到內(nèi)核模塊來運(yùn)行的,運(yùn)行在內(nèi)核空間里面。

          所以要運(yùn)行我們自己構(gòu)造的模塊,需要自己的系統(tǒng)已經(jīng)配置好內(nèi)核樹,然后把目標(biāo)模塊和內(nèi)核樹連接起來運(yùn)行!但是我們安裝的Linux沒有源碼(至少我的是這樣),更不要說已經(jīng)編譯好的內(nèi)核樹了~

          (1)下載Linux源碼:

          首先查看可以下載的Linux內(nèi)核源碼包

          root@jiq-desktop:~#apt-cache search linux-source

          然后選定要下載的源碼包:

          root@jiq-desktop:~#apt-get install linux-source-2.6.22


           下載完成后,在/usr/src下,文件名為:linux-source-2.6.32.tar.bz2,是一個(gè)壓縮包,然后用

          命令解壓即可獲得Linux內(nèi)核的源代碼:

          root@jiq-desktop:/usr/src#tar jxvf linux-source-2.6.32.tar.bz2

           

           

          (2)然后在Linux內(nèi)核源碼目錄/usr/src/linux-source-2.6.32目錄下面用老的方法配置好Linux內(nèi)核:

          root@jiq-desktop:/usr/src/linux-source-2.6.32#make oldconfig



          (3)然后執(zhí)行:

          root@jiq-desktop:/usr/src/linux-source-2.6.32#make bzImage

          這個(gè)過程大概需要一個(gè)小時(shí)左右。。。執(zhí)行完成后會(huì)在當(dāng)前目錄下面生成一個(gè)文件vmlinux.o



          (4)然后編譯模塊:

          root@jiq-desktop:/usr/src/linux-source-2.6.32#make modules

          這個(gè)過程又是大概一個(gè)小時(shí)。。。 
           

           


          (5)然后便可以安裝模塊了:

          root@jiq-desktop:/usr/src/linux-source-2.6.32#make modules_install

          這個(gè)過程大概兩分鐘:

           

           

           以上步驟完成以后,會(huì)在/lib/modules目錄下面生成一個(gè)文件夾linux-2.6.32-24-generic,至此你差不多已經(jīng)成了,因?yàn)槟阋呀?jīng)構(gòu)造好了內(nèi)核樹!?。?/p>

           

          下面開始在自己的工程文件夾下面建立兩個(gè)文件:

          hello.c(不用說了)

          Makefile(它需要能夠找到內(nèi)核樹,然后將目標(biāo)模塊鏈接上去):

           

           注意里面各種變量的顏色額~有興趣的讀者可以自己去研究一下這個(gè)文件,里面唯一和hello.c相關(guān)的部分就是

          obj-m := hello.o 那一行了!第5行表明了內(nèi)核樹build目錄的位置。

          下面在當(dāng)前目錄下面執(zhí)行
          root@jiq-desktop:/usr/jiq/DriverProject#make

          生成以下文件

           

           


          然后利用insmod命令將模塊插入到內(nèi)核樹 中:

          root@jiq-desktop:/usr/jiq/DriverProject#insmod ./hello.ko

          模塊裝載觸發(fā)hello.c的init()方法,輸出hello world,如果沒有的話,是因?yàn)槠鋵⑤敵龇诺?var/log/syslog中去了。打開便可以看見你的結(jié)果!

          卸載目標(biāo)模塊命令是:

          root@jiq-desktop:/usr/jiq/DriverProject#rmmod ./hello.ko

          至此你已經(jīng)成功邁出了Linux驅(qū)動(dòng)開發(fā)的第一步~

           

          原文連接:http://blog.csdn.net/ypoflyer/article/details/6087668

          本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
          打開APP,閱讀全文并永久保存 查看更多類似文章
          猜你喜歡
          類似文章
          ubuntu 2.6.22 內(nèi)核樹建立
          (mark)(轉(zhuǎn))ubuntu10.10構(gòu)建內(nèi)核樹
          Debian/Ubuntu Linux下內(nèi)核編程者必備_HackingYou_SupeSi...
          linux 內(nèi)核頭文件 linux kernel header
          石頭札記: Linux 內(nèi)核編譯詳解
          編譯內(nèi)核操作流程
          更多類似文章 >>
          生活服務(wù)
          分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
          綁定賬號(hào)成功
          后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
          如果VIP功能使用有故障,
          可點(diǎn)擊這里聯(lián)系客服!

          聯(lián)系客服