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

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 5274 | 回復(fù): 4
打印 上一主題 下一主題

多個文件編譯驅(qū)動模塊 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2010-12-05 12:42 |只看該作者 |倒序瀏覽
本帖最后由 Gen216ius 于 2010-12-05 14:17 編輯

編譯一個驅(qū)動模塊,這個模塊的源代碼(.c文件與.h文件)不在內(nèi)核源碼樹下,但它包含了源碼下的一些頭文件.h及源文件.c。
比如說這個工程由以下文件來實現(xiàn):
工程文件夾下
led.c
源碼樹文件夾下
gpio.c
gpio.h

現(xiàn)在led.c通過GPIO端口來控制,那么led.c中就調(diào)用了gpio.c中的文件。這樣的Makefile要怎么寫啊?!!
我的Makefile如下

  1. obj-m        := led.o
  2. led-objs=gpio.o
  3. KDIR ?=/opt/mv_pro_4.0/montavista/pro/devkit/lsp/ti-davinci
  4. CC=arm_v5t_le-gcc

  5. all:
  6.         $(MAKE) -C $(KDIR) M=$(PWD) modules
  7.         $(CC) -o ledtest main.c

  8. clean:
  9.         rm -rf *.ko *.o *.mod.c .tmp_versions *.symvers gpiotest reg led
復(fù)制代碼
可就是點不亮燈啊

奇怪現(xiàn)象:在gpio.c中修改led.c調(diào)用的函數(shù)名,但led.c中還是原來的,這使得led.c中根本就找不到實現(xiàn)函數(shù),但這卻不會出錯!說明led.c中根本就沒有調(diào)用gpio.c的函數(shù)吧。。

多個文件編譯出一個驅(qū)動模塊是怎么樣寫Makefile?。。。。。÷闊┐蠹抑更c一下哈。。!謝謝。。。!

論壇徽章:
0
2 [報告]
發(fā)表于 2010-12-05 15:56 |只看該作者
如果是多個源文件編譯出一個模塊,那么假設(shè)模塊名是mytest.ko,那么源文件名不能有mytest.c,下面是一個例子:
  obj-m := mytest.o
  mytest-objs := file1.o file2.o file3.o

論壇徽章:
0
3 [報告]
發(fā)表于 2010-12-05 17:53 |只看該作者
本帖最后由 Gen216ius 于 2010-12-05 18:08 編輯

回復(fù) 2# EZWORD

謝謝EZWORD。!

我的情況是這樣的:
比如工程文件夾下只有一個文件file.c,而其他的文件(file2.c、file3.c)是在內(nèi)核源碼樹下的,
file1.c中調(diào)用了file2.c或者file3.c中的函數(shù)。那么這個Makefile應(yīng)該怎么樣寫呢?。!

論壇徽章:
0
4 [報告]
發(fā)表于 2010-12-05 18:34 |只看該作者
本帖最后由 EZWORD 于 2010-12-05 18:36 編輯

上面說的很清楚呀,你的應(yīng)該這樣寫

  1. KDIR ?=/opt/mv_pro_4.0/montavista/pro/devkit/lsp/ti-davinci

  2. CC=arm_v5t_le-gcc

  3. obj-m        := my_led.o

  4. my_led-objs:=gpio.o led.o

  5. all:

  6.         $(MAKE) -C $(KDIR) M=$(PWD) modules

  7.         $(CC) -o ledtest main.c



  8. clean:

  9.         rm -rf *.ko *.o *.mod.c .tmp_versions *.symvers gpiotest reg led

復(fù)制代碼

論壇徽章:
0
5 [報告]
發(fā)表于 2010-12-05 22:59 |只看該作者
回復(fù) 4# EZWORD


        編譯結(jié)果如下,并且燈還是沒亮,請高手看看是不是哪里錯了。。!

  1. [root@localhost GPIOdriver]# ls
  2. loadmodules.sh  main.c  Makefile  ReadMe.txt  user_gpio.c  user_gpio.h
  3. [root@localhost GPIOdriver]# make all
  4. make -C /opt/mv_pro_4.0/montavista/pro/devkit/lsp/ti-davinci M=/opt/nfs/GPIOdriver modules
  5. make[1]: Entering directory `/opt/mv_pro_4.0/montavista/pro/devkit/lsp/ti-davinci'
  6.   CC [M]  /opt/nfs/GPIOdriver/user_gpio.o
  7. In file included from /opt/nfs/GPIOdriver/user_gpio.c:16:
  8. include/asm/arch/gio.h: In function `gpio_set':
  9. include/asm/arch/gio.h:114: warning: implicit declaration of function `__raw_writel'
  10. include/asm/arch/gio.h: In function `gpio_get_value':
  11. include/asm/arch/gio.h:165: warning: implicit declaration of function `__raw_readl'
  12. make[2]: *** 沒有規(guī)則可以創(chuàng)建“/opt/nfs/GPIOdriver/led.o”需要的目標(biāo)“/opt/nfs/GPIOdriver/gio.o”。 停止。
  13. make[1]: *** [_module_/opt/nfs/GPIOdriver] 錯誤 2
  14. make[1]: Leaving directory `/opt/mv_pro_4.0/montavista/pro/devkit/lsp/ti-davinci'
  15. make: *** [all] 錯誤 2
  16. [root@localhost GPIOdriver]#
復(fù)制代碼
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP