编译警告 - ARM交叉编译器

问题描述:

我一直在尝试交叉编译可加载的内核模块,并且我一直在收到警告消息,希望能够获得帮助。编译警告 - 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

谢谢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 

欲了解更多详细信息,请参考以下链接

评论,欢迎

谢谢你