編寫驅動的makefile使要

2021-09-28 11:27:53 字數 997 閱讀 3338

一般在編譯linux驅動時,我們需要在交叉編譯環境中進行編譯,所以要在編譯環境中搭建交叉編譯環境。編寫驅動的makefile使需要制定驅動依賴的核心的路徑,makefile寫法如下:

kern_dir = /***/***/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=/***/***/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'。

當make的目標為all時,-c $(kdir) 指明跳轉到核心原始碼目錄下讀取那裡的makefile;m=$(pwd) 表明然後返回到當前目錄繼續讀入、執行當前的makefile。

當從核心原始碼目錄返回時,kernelrelease已被被定義,kbuild也被啟動去解析kbuild語法的語句,make將繼續讀取else之前的內容,其為kbuild語法的語句, 指明模組原始碼中各檔案的依賴關係,以及要生成的目標模組名。

linux驅動的Makefile編寫

makefile如下 obj m hello drv.o kernel dir lib modules shell uname r build pwd shell pwd all make c kernel dir subdirs pwd modules clean rm o ko mod.c ph...

5 裝置驅動Makefile編寫及編寫測試驅動

市面上的關於裝置驅動的書大部分是三星的開發板 都是啥210,2440啥的舊晶元 全志和瑞芯微的好像沒看到有,還有有關ti晶元的中文書籍關於驅動方面講的也很淺,不適於入門。博文是在關於三桑的開發板上的基礎上開始編寫的,因筆者 我 水平問題,錯漏在所難免 參考資料改的makefile mkdir roo...

嵌入式驅動關於Makefile的編寫例子

linux 驅動總結 linux驅動介面裡的 init exit 其實就是巨集。linux驅動程式不能用gcc直接編譯生成模組。要用makefile ifneq kernelrelease obj m test.o else kerneldir lib modules shell uname r b...