2013-10-03 275 views
0

我一直在嘗試交叉編譯可加載的內核模塊,並且我一直在收到警告消息,希望能夠獲得幫助。編譯警告 - ARM交叉編譯器

下面是警告消息

make[1]: Entering directory `/home/userid/rowboat-android/kernel' 
    Building modules, stage 2. 
    MODPOST 1 modules 
WARNING: "omap_device_build" [/home/userid/myfiles/lcdc_load_device.ko] undefined! 
WARNING: "omap_hwmod_lookup" [/home/userid/myfiles/lcdc_load_device.ko] undefined! 
make[1]: Leaving directory `/home/userid/rowboat-android/kernel' 

下面是Makefile文件

obj-m :=lcdc_load_device.o 
lcdc_load_device-m := ../rowboat-android/kernel/arch/arm/plat-omap/omap_device.o 
lcdc_load_device-m += ../rowboat-android/kernel/arch/arm/mach-omap2/omap_hwmod.o 

ccflags-m := -I$(src)/../rowboat-android/kernel/arch/arm/plat-omap/include/plat/ 

KDIR := /home/userid/rowboat-android/kernel/ 
PWD := $(shell pwd) 

default: 
    $(MAKE) ARCH=arm CROSS_COMPILE=/home/userid/rowboat-android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi- -C $(KDIR) SUBDIRS=$(PWD) modules 

clean: 
    $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) clean 

我懷疑makefile文件是找到頭文件「omap_device_build」「omap_hwmod_lookup 「函數。

感謝您的幫助,並感謝您的提前。

+1

這是完整的makefile嗎?它使用不在makefile中的目標('modules')再次調用'make'。你輸入的'make'命令是什麼。它只是「製造」? – lurker

+0

是的,這是完整的makefile。我進入了make。你能澄清第二個陳述嗎? rowboat-android/kernel確實有一個makefile。看起來像我的問題可能在KDIR變量 –

+1

生成文件中的默認目標調用「$(MAKE)」,目標是「模塊」,因此我不確定它會在哪裏選擇該目標。但這與警告無關。有些東西正在調用這些函數,而沒有在庫中找到它們。 – lurker

回答

0

謝謝mbratch並徵求他們的意見

爲了解決警告爛漫噪音,符號需要導出。對於上述問題的地方

EXPORT_SYMBOL(omap_device_build) in omap_device.c 
EXPORT_SYMBOL(omap_hwmod_lookup) in omap_hwmod.c 

並編譯內核。然後針對編譯的內核編譯可加載的內核模塊。執行以下步驟來驗證是否符號已經遠銷

grep omap_device_build /proc/kallsyms 
or 
grep omap_device_build Module.symvers 

欲瞭解更多詳細信息,請參考以下鏈接

評論,歡迎

謝謝你