【问题标题】:Compile Warning - ARM Cross Compiler编译警告 - ARM 交叉编译器
【发布时间】:2013-10-10 13:36:00
【问题描述】:

我一直在尝试交叉编译一个可加载的内核模块,并且收到警告消息,我想获得帮助。

以下是警告信息

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" 函数的头文件。

感谢您的帮助,并提前感谢您。

【问题讨论】:

  • 这是完整的makefile吗?它再次调用make,目标不在您的makefile (modules) 中。你输入的make 命令是什么。只是make
  • 是的,这是完整的 makefile。我输入了make。你能澄清第二个说法吗? rowboat-android/kernel 确实有一个生成文件。看起来我的问题可能出在 KDIR 变量中
  • makefile 中的默认目标调用$(MAKE),目标为modules,所以我不确定它会在哪里选择该目标。但这与警告无关。有些东西正在调用这些函数,但在库中找不到它们。
  • 我认为它正在获取标题,否则您会收到错误消息。意思是/home/userid/myfiles/lcdc_load_device.ko 指的是那些符号,但没有找到定义。如果您知道这些符号实际定义在哪个模块中,那么您可能需要确定该模块是否被链接。
  • 我认为你有这个倒退。您不想包含拉入omap_device_buildomap_hwmod_lookup 定义的标题。您引用了一个调用函数的 macro,但它们不是 EXPORT_GPL;或提供给模块。

标签: makefile arm embedded-linux kernel-module linux-toolchain


【解决方案1】:

感谢 mbratchartless noise 的 cmets

要解决警告,需要导出符号。对于上述问题的地方

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

更多详情请参考以下链接

欢迎评论

谢谢

【讨论】:

    猜你喜欢
    • 2020-02-05
    • 2014-06-13
    • 1970-01-01
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    • 2019-05-21
    • 2011-05-20
    • 2016-05-26
    相关资源
    最近更新 更多