1. 程式人生 > >編寫驅動的makefile使要

編寫驅動的makefile使要

一般在編譯linux驅動時,我們需要在交叉編譯環境中進行編譯,所以要在編譯環境中搭建交叉編譯環境。編寫驅動的makefile使需要制定驅動依賴的核心的路徑,makefile寫法如下:
  KERN_DIR = /xxx/xxx/linux-2.6.22.6
  
  all:
      make -C $(KERN_DIR) M=`pwd` modules 
  
  clean:
      make -C $(KERN_DIR) M=`pwd` modules clean
      rm -rf modules.order
  
 obj-m    += buttons.o

     KERN_DIR=/XXX/XXX/linux-2.6.22.6,這句是對KERN_DIR進行賦值,確定後面使用核心原始碼時的核心原始碼路徑。

  make -C $(KERN_DIR) M='pwd' modules,這句是makefile的規則:-C選項的作用是指將當前工作目錄轉移到你所指定的位置,當make的目標為all時,-C $(KDIR) 指明跳轉到核心原始碼目錄下讀取那裡的Makefile。

    M=$(PWD) 表明然後從核心makefile中返回到當前目錄繼續讀入、執行當前的Makefile。M是核心根目錄下的Makefile中使用的變數,"M="選項的作用是,當用戶需要以某個核心為基礎編譯一個外部模組的話,需要在make modules命令中加入"m=dir",程式會自動到你所指定的dir目錄中查詢模組原始碼,將其編譯,生成ko檔案。M=‘pwd’這句話是用來制定我們編譯的驅動的路徑。這句可以這樣來寫PWD:=$(shell pwd)  M='PWD'。