2

Я попытался скомпилировать мой первый загружаемый модуль ядра и не смог :(

Вот ошибка:

r@ubuntu:/$ sudo make -C /lib/modules/`uname -r`/build/ M=`pwd`
[sudo] password for r: 
make: Entering directory `/usr/src/linux-headers-2.6.38-8-generic'
scripts/Makefile.build:76: kbuild: Makefile.build is included improperly
make[1]: *** No rule to make target `kernel/bounds.c', needed by `kernel/bounds.s'.  Stop.
make: *** [_module_] Error 2
make: Leaving directory `/usr/src/linux-headers-2.6.38-8-generic'

Мне нужна помощь, зная, что не так.

Вот make-файл, который я использую:

obj-m += sample_module_for_techblog.o 
all: 
     make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) modules 
clean: 
     make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) clean 
clean-files := Module.symvers

я обнаружил следующий фрагмент кода (который печатает часть ошибки, которую я получаю) отсюда

ifndef obj
$(warning kbuild: Makefile.build is included improperly)
endif

Я надеюсь, что это помогает решить проблему.

1 ответ1

2

Попробуйте этот, настроенный по мере необходимости. Я не знаком с учебником, на который вы ссылаетесь, но предположим, что вы создали самый простой модуль стиля 'hello world', который вы пытаетесь скомпилировать:

ifeq ($(KERNELRELEASE),)

    KERNELDIR ?= /lib/modules/$(shell uname -r)/build
    PWD := $(shell pwd)

modules:
        $(MAKE) -C $(KERNELDIR) M=$(PWD) modules

modules_install:
        $(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install

# adjust this by removing what applies to you
clean:
        rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions \
        *.symvers  *.order 

.PHONY: modules modules_install clean

else
obj-m := hello.o 

endif

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .