[問題]請教如何將Linux Driver 寫成2個*.c file

作者: greenlinux (GreenLinux)   2015-05-11 15:49:10
請教各位:
因為需要在 driver.c 內多寫一些function 而造成 c file 看起來很亂.
我想將 driver.c 內部分 function 移到另一個 *.c file (Ex: drv_func.c)
在不修改 Makefile 及 Kconfig 的前提下可以做到嗎.??
THANKS
作者: wens (文思)   2015-05-11 16:04:00
不修改 Makefile, 那你是要從一個 .c #include 另一個嗎?
作者: greenlinux (GreenLinux)   2015-05-11 16:21:00
wens大,可以#include *.c嗎.? 不是只能#include *.h?
作者: askacis (ASKA)   2015-05-11 17:00:00
可以include c, kernel source tree 裡面有人這樣搞,
作者: greenlinux (GreenLinux)   2015-05-11 20:41:00
a大謝謝.
作者: musicguitar (WOO)   2015-05-12 01:23:00
單純好奇 為何不改Makefile呢?有何好處嗎?
作者: greenlinux (GreenLinux)   2015-05-12 21:05:00
只是希望只改driver code, 不要動到其他設定而已抱歉那請問大家為何比較建議改Makefile?Makefile改成 obj-$(xx) +=driver.o func.o 這樣?
作者: leolarrel (真.粽子無雙)   2015-05-13 09:46:00
目前的kernel Makeifle 邏輯確實要照上面說法才行目前的kernel Makefile 邏輯確實要照上面的方法才行
作者: askacis (ASKA)   2015-05-13 20:26:00
改makefile比較正統而且直覺,include C的做法算是特例目的是為了解決一些Kbuild系統linking上的問題
作者: yvb   2015-05-14 01:33:00
其實 include .c 也未必不好. 拉出去的 .c 若是一堆 staticvariables 和 static functions, 又要在 driver.c 中叫用...弄到 Makefile 那邊去處理, 也許反而麻煩又可能出錯.只不過, 若整理清楚, 依舊全放在 driver.c 有何不可?
作者: greenlinux (GreenLinux)   2015-05-14 09:52:00
yvb大. 了解.. 謝謝..我將一些全域變數,func宣告在*.h而讓driver及func呼叫測試到現在暫時沒有問題.(我是用#include "*.c"方法要分開 driver.c 及 func.c 的用意只是想...一些基本driver功能不會改,所以就放在driver.c而一些作為測試或跟 Android NDK 溝通的部分經常要改所以想先分出來..

Links booklink

Contact Us: admin [ a t ] ucptt.com