亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 當(dāng)每個(gè)C文件里都有module_init時(shí),怎么把多個(gè)C文件編譯成一個(gè)ko文件? [打印本頁]

作者: 牡丹巖    時(shí)間: 2014-08-26 12:02
標(biāo)題: 當(dāng)每個(gè)C文件里都有module_init時(shí),怎么把多個(gè)C文件編譯成一個(gè)ko文件?
是這樣的:我用platform平臺總線做驅(qū)動,有兩個(gè)文件:

(1)平臺設(shè)備led_dev.c

(2)平臺驅(qū)動led_drv.c

l現(xiàn)在問題是,

led_dev.c中有:

int __init led_dev_init(void)
{
    platform_device_register(&led_device);  
   
    return 0;
}

module_init(led_dev_init);



led_drv.c中有:

int __init led_drv_init(void)
{
    platform_driver_register(&led_driver);
   
    return 0;
}

module_init(led_drv_init);

采用編譯成模塊時(shí),
Makefile這樣寫:obj-m += led_dev.o led_drv.o
是可以把led_dev.c編譯成led_dev.ko
         把led_drv.c編譯成led_drv.ko

然后加載時(shí)insmod兩次就行了!

但現(xiàn)在我想:能不能僅編譯成一個(gè)ko文件,

加載時(shí)只需insmod一次就行了?

為達(dá)到此效果,我的Makefile改成這樣:
obj-m += led.o
led-objs := led_dev.o led_drv.o
但編譯會報(bào)錯(cuò): multiple definition of `init_module'

請問:各位有什么方法呢?不妨賜教!小弟謝過~
作者: e403076568    時(shí)間: 2014-08-26 18:17
吃飽了撐得
作者: 牡丹巖    時(shí)間: 2014-08-26 18:29
大神 有何賜教呢?
作者: guocslock    時(shí)間: 2014-08-27 13:12
兩個(gè)文件里面只定義一個(gè)module_init,在其中把需要做的事都做了。
作者: 牡丹巖    時(shí)間: 2014-08-27 16:38
guocslock 發(fā)表于 2014-08-27 13:12
兩個(gè)文件里面只定義一個(gè)module_init,在其中把需要做的事都做了。


看來也只能那樣了!
作者: lelee007    時(shí)間: 2014-08-27 21:47
必須只能那樣

一個(gè)ko里邊只能有一個(gè)module_init
作者: 牡丹巖    時(shí)間: 2014-08-28 00:53
thanks
作者: zhangbo357    時(shí)間: 2015-04-24 17:20
你想違背設(shè)備-總線-驅(qū)動模型
作者: linisco    時(shí)間: 2015-05-04 20:58
沒事找事型的,違背了驅(qū)動的設(shè)備、驅(qū)動的分離思想




歡迎光臨 Chinaunix (http://72891.cn/) Powered by Discuz! X3.2