битбэйк билд не может найти разреженный - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь скомпилировать модуль ядра внутри рецепта Yocto. Тем не менее, я всегда получаю эту ошибку /bin/sh: 1: sparse: not found. Если я кросс-компилирую модуль с заполненным SDK, он работает отлично.

Каким-то образом sh не может найти sparse. Примечание: sparse загружено

Вот мой рецепт

SUMMARY = "test Linux kernel module"
LICENSE = "CLOSED"

inherit module

SRC_URI = "git://github.com/xyz/test_yocto.git;protocol=https"
SRCREV = "${AUTOREV}"
#SRCREV = "5c6224fee66d8e4eb167f4c74d42e5cfa479e9eb"

S = "${WORKDIR}/git"

# The inherit of module.bbclass will automatically name module packages with
# "kernel-module-" prefix as required by the oe-core build environment.

RPROVIDES_${PN} += "kernel-module-test"

, а вот мой make-файл:

obj-m := test.o

SRC := $(shell pwd)

all:
        $(MAKE) KBUILD_CHECKSRC=1 -C $(KERNEL_SRC) M=$(SRC)

modules_install:
        $(MAKE) -C $(KERNEL_SRC) M=$(SRC) modules_install

clean:
        rm -f *.o *~ core .depend .*.cmd *.ko *.mod.c
        rm -f Module.markers Module.symvers modules.order
        rm -rf .tmp_versions Modules.symvers

Если я удаляю KBUILD_CHECKSRC=1, которыйпройдут проверки, все будет работать нормально.

Что мне здесь не хватает?

1 Ответ

1 голос
/ 16 октября 2019

Я не эксперт по ядру, но это кажется довольно ясным: когда вы определяете KBUILD_CHECKSRC=1, сборка модуля использует внешний инструмент, называемый sparse. Этот инструмент в настоящее время не зависит от сборки модуля ядра, поэтому сборка завершается неудачей.

Вы можете либо избежать использования KBUILD_CHECKSRC (и это, вероятно, то, что вам нужно: KBUILD_CHECKSRC звучит так, как будто разработчики модулей должны использовать это). В качестве альтернативы вы можете добавить «sparse-native» к своим рецептам модуля DEPENDS, а затем убедиться, что вы используете слой, который обеспечивает это ( layer.openembedded.org говорит, что в meta-sca он есть ).

...