Я хочу создать модуль ядра, который имеет внешние символы для статической библиотеки для моего BBB, используя bitbake.
Эта проблема заключается в том, что моя статическая библиотека не связана с модулем ядра и остается с отсутствующими символами.
Используя эту последовательность 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
Это имеет смысл для меня до сих пор.
Теперь, если я установлю свой make-файл следующим образом (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
любым правилам, но безуспешно.
Я на неправильном пути или чего мне не хватает, чтобы связать библиотеку с моим модулем ядра?