c檔案如何編譯為ko的makefile檔案編寫
2014-04-29 11:24:25
分類: android平台
首先需要知道:
obj-m = *.o
obj-y = *.o
上面兩者的區別在於,前者才會生成ko檔案,後者只是**編譯進核心,並不生成ko檔案。
生成ko檔案,分兩種情況:單個.c檔案和多個.c檔案【以展訊7730 android4.4為例】
1.單個.c檔案
kernel配置檔案中定義
config_runyee_camvib=m
注意上面的m,表示作為乙個模組進行編譯,最後在makefile中需要用到的編譯開關。
然後再相應的原始碼目錄中的makefile中新增如下語句:
obj-$(config_runyee_camvib) := camvib.o
上面的一行的作用就是編譯camvib.c的原始檔,同時會生成相應的camvib.ko檔案,和編譯生成
的camvib.o在同一目錄
最後就是insmod動作了:
insmod /system/lib/modules/camvib.ko
2.多個.c檔案生成ko檔案
kernel配置檔案中定義
config_touchscreen_focaltech=m
注意上面的m,表示作為乙個模組進行編譯,最後在makefile中需要用到的編譯開關。
然後再相應的原始碼目錄中的makefile中新增如下語句:
obj-$(config_touchscreen_focaltech) +=
focaltech_ts
.o
focaltech_ts-objs :=
focaltech.o
focaltech_ts-objs +=
focaltech
_ctl
.ofocaltech_ts-objs +=
focaltech_ex_fun.o
上面的意思就是編譯生成
ko檔案需要三個.c檔案【focaltech.c focaltech_ctl.c focaltech_ex_fun.c】,最後
生成名為
focaltech_ts
的ko檔案,注意ko檔名一定不能
為foc
altech
。那麼在obj-m和lpc-objs中都含有
focaltech.o,
對make來講會產生迴圈和混淆,因此也不能這樣書寫
最後就是insmod動作了:
insmod /system/lib/modules/
focaltech_ts
.ko
c檔案如何編譯為ko的MAKEFILE檔案編寫
首先需要知道 obj m o obj y o 上面兩者的區別在於,前者才會生成ko檔案,後者只是 編譯進核心,並不生成ko檔案。生成ko檔案,分兩種情況 單個.c檔案和多個.c檔案 以展訊7730 android4.4為例 1.單個.c檔案 kernel配置檔案中定義 config runyee c...
C 將類檔案編譯為dll檔案
輸入csc 檢視編譯選項 注意 要將命名空間也寫進csc裡啊 out 輸出檔名 預設值 包含主類的檔案或第乙個檔案的基名稱 target exe 生成控制台可執行檔案 預設 縮寫 t exe target winexe 生成 windows 可執行檔案 縮寫 t winexe target libr...
如何寫Linux下編譯驅動模組的Makefile
編譯驅動模組的makefile的寫法示例 general purpose makefile for linux kernel module by guoqingbo kern dir home gqb development linux kernel 2.6.37 kern dir usr src ...