c檔案如何編譯為ko的MAKEFILE檔案編寫

2021-07-07 02:24:00 字數 1341 閱讀 3317

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 ...