Linux內核驅動將多個C文件編譯成一個ko文件的方法——每個C文件中都有module_init與module_exit

以兩個C文件爲例:函數

將本該被分別編譯成adc_device.ko和adc_driver.ko的adc_device.c、adc_driver.c編譯成一個ko文件!
spa

採用方法: 原型

第一步、改動C文件
一、去掉adc_device.c文件中module_init(xxx)、module_exit(yyy)中xxx、yyy 函數原型的keywordstatic
二、註銷adc_device.c文件中module_init(xxx)、module_exit(yyy)函數
三、在adc_driver.c文件中加入用keywordextern聲明的上述xxx、yyy函數
四、在adc_driver.c文件中module_init(mmm)、module_exit(nnn)中mmm、nnn 函數原型合適地方調用xxx、yyy函數
注意:當把多個C文件編譯成一個.ko文件時, C文件中的module_init、module_exit 會提示重定義。
     故一個ko裏邊僅僅能有一個module_init和一個module_exit!
it

 

第二步、編寫Makefile文件(關鍵部分)編譯

obj-m += adc.o
adc-objs := adc_device.o  adc_driver.o
class

就這樣。將本該被分別編譯成adc_device.ko和adc_driver.ko的adc_device.c、adc_driver.cmodule

編譯成一個adc.ko文件!file

相關文章
相關標籤/搜索