Связать статическую библиотеку с модулем ядра, используя bitbake

Я хочу создать модуль ядра, который имеет внешние символы для статической библиотеки для моего 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 любым правилам, но безуспешно.

Я на неправильном пути или чего мне не хватает, чтобы связать библиотеку с моим модулем ядра?


person x'mpl'    schedule 10.09.2018    source источник
comment
Кажется, что ответ stackoverflow.com/a/34190764/3440745 описывает конкретно ваш случай - с одинаковыми именами как для модуль и его исходный файл. Но в случае нескольких исходных файлов это не работает.   -  person Tsyvarev    schedule 11.09.2018
comment
Я уже изучил их, но не смог построить модуль. Оказалось, что это было вызвано не make-файлом, а другой ошибкой, которая выглядела очень похожей. Таким образом, этот isses дублируется/избыточен и может быть удален.   -  person x'mpl'    schedule 16.09.2018