国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

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

開通VIP
寫內(nèi)核模塊Makefile的技巧

 寫內(nèi)核模塊Makefile的技巧

新一篇: 今天遇到了麻煩事

寫內(nèi)核模塊Makefile的技巧

hansel@163.com
2007.11.07

   Linux 2.6的內(nèi)核使用Kbuild來(lái)編譯內(nèi)核模塊。Kbuild能夠編譯內(nèi)核樹目錄內(nèi)的內(nèi)核模塊,也能夠編譯內(nèi)核樹目錄外的內(nèi)核模塊(外部?jī)?nèi)核模塊)。

.編譯外部?jī)?nèi)核模塊的命令:
   #cd <your-module-dir>
   #make -C <path-to-kernel> M=`pwd`
  
   其中<your-module-dir>為要編譯的內(nèi)核模塊所在目錄,<path-to-kernel> 為內(nèi)核源碼所在的目錄。
   對(duì)于發(fā)行版本的Linux,可以用:
   #make -C /lib/modules/`uname -r`/build M=`pwd`
  
   注意:使用Kbuild之前,必須先成功編譯過(guò)內(nèi)核源碼。
   說(shuō)明:
        .#make -C <path-to-kernel> M=`pwd` modules
        作用與上面的命令一樣
        .以前的內(nèi)核版本可以使用
         #make -C <path-to-kernel> SUBDIRS=`pwd`  modules

.安裝外部?jī)?nèi)核模塊
   #make -C <path-to-kernel> M=`pwd` modules_install  
    默認(rèn)安裝目錄為:/lib/modules/`uname -r`/extra,可以通過(guò)INSTALL_MOD_PATH宏在默認(rèn)安裝路徑前加前綴。
    例如:
   #make -C <path-to-kernel> INSTALL_MOD_PATH=/opt M=`pwd` modules_install  
   則編譯后的模塊會(huì)放在/opt/lib/modules/`uname -r`/extra
   通過(guò)宏INSTALL_MOD_DIR可以修改是否放在'extra'下,例如:
   #make -C <path-to-kernel> INSTALL_MOD_DIR=golf M=`pwd` modules_install 
   則編譯后的模塊會(huì)放在/lib/modules/`uname -r`/golf
  
.編譯單個(gè)文件
   #make -C <path-to-kernel> M=`pwd` <filename>

.其他命令
   #make -C <path-to-kernel> M=`pwd` clean
   #make -C <path-to-kernel> M=`pwd` help

.Kbuild文件
  Linux的Kbuild會(huì)在內(nèi)核模塊目錄下查找Kbuild文件,如果有,則在編譯時(shí)會(huì)使用該文件。

示例:
  假設(shè)有這么幾個(gè)文件:8123_if.c 8123_if.h  8123_pci.c 8123_bin.o_shipped(二進(jìn)制的模塊文件)
  Kbuild文件的內(nèi)容:
     obj-m := 8123.o
     8123-y:8123_if.o 8123_pci.o 8123_bin.o
    
  Makefile的內(nèi)容:
     #為了兼容舊版本的Kbuild
     ifneq($(KERNELRELEASE),)
        include Kbuild
     else
        #正常的Makefile
        KDIR:=/lib/modules/`uname -r`/build
        all::
           $(MAKE) -C $(KDIR) M=`pwd` $@
          
        #其他target
        genbin:
          echo "X" > 8123_bin_shipped
     endif
    
     注意,沒(méi)有源碼的二進(jìn)制.o文件必須以原文件名加_shipped結(jié)尾,例如8123_bin.o_shipped,KBuild會(huì)把8123_bin.o_shipped
         復(fù)制為8123_bin.o,然后一起編譯。
        
        
.Makefile中如何包括自己的include文件
    由于采用Kbuild編譯外部?jī)?nèi)核模塊時(shí),編譯路徑切換到了內(nèi)核源碼樹的目錄,因此如果在Makefile中使用相對(duì)路徑來(lái)包含另一個(gè)文件
    時(shí),會(huì)找不到該文件。因此,不能用
       include ../config.mk
      
    應(yīng)該用:
       ifeq ($(obj),)
          obj= .
       endif
       include $(obj)/../config.mk 

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
linux documents--modules.txt
Ubuntu12.10 內(nèi)核源碼外編譯 linux模塊--編譯驅(qū)動(dòng)模塊的基本方法
hello內(nèi)核模塊編譯的全過(guò)程
通用內(nèi)核模塊Makefile
內(nèi)核模塊HelloKernel編程實(shí)例詳解
開發(fā)一個(gè)簡(jiǎn)單的內(nèi)核程序
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服