我想使用bitbake为我的BBB构建一个静态模块的内核模块,该模块具有外部符号。
此问题是我的静态库未链接到内核模块,并且缺少符号。
使用此Makefile序列:
obj-m += hcsr04.o
hcsr04-src := hcsr04.o
SRC := $(shell pwd)
all:
$(MAKE) -C $(KERNEL_SRC) M=$(SRC)
modules_install:
$(MAKE) -C $(KERNEL_SRC) M=$(SRC) modules_install
生成二进制文件,该二进制文件当然缺少nm
所示的符号,如(只是一个片段)
U printk
00000004 b pruData
00000000 b pruDataMem
U prussdrv_exec_program
U prussdrv_exit
U prussdrv_init
U prussdrv_map_prumem
U prussdrv_open
U prussdrv_pru_clear_event
U prussdrv_pru_disable
U prussdrv_pruintc_init
U prussdrv_pru_wait_event
到目前为止,这对我来说很有意义。
现在,如果我这样设置我的makefile(libprussdrv.a是我需要链接的库):
obj-m += hcsr04.o
hcsr04-src := hcsr04.o
hcsr04-objs := hcsr04.o libprussdrv.a
SRC := $(shell pwd)
all:
$(MAKE) -C $(KERNEL_SRC) M=$(SRC)
modules_install:
$(MAKE) -C $(KERNEL_SRC) M=$(SRC) modules_install
我收到了一个更小的模块,其中仅包含以下符号:
00000000 d $d
00000000 r $d
00000000 r $d
00000024 r __module_depends
00000000 D __this_module
00000000 r __UNIQUE_ID_srcversion9
0000002d r __UNIQUE_ID_vermagic8
00000000 r ____versions
我尝试为任何规则指定-l[libpostfix].a
,但没有成功。
我走错了路还是将库链接到内核模块时丢失了什么?