Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 我需要将我的makefile指向什么,才能使它正确地构建内核驱动程序?_C_Makefile_Linux Kernel_Debian_Linux Device Driver - Fatal编程技术网

C 我需要将我的makefile指向什么,才能使它正确地构建内核驱动程序?

C 我需要将我的makefile指向什么,才能使它正确地构建内核驱动程序?,c,makefile,linux-kernel,debian,linux-device-driver,C,Makefile,Linux Kernel,Debian,Linux Device Driver,我正在为一个班级编写一个简单的驱动程序。我正在使用此生成文件: obj-m := mysourcefile.o KERNELDIR ?= /lib/modules/$(shell uname -r)/kernel all default: modules install: modules_install modules modules_install help clean: $(MAKE) -C $(KERNELDIR) M=$(pwd) $@ 当我使用以下命令行运行此命令时:

我正在为一个班级编写一个简单的驱动程序。我正在使用此生成文件:

obj-m := mysourcefile.o

KERNELDIR ?= /lib/modules/$(shell uname -r)/kernel

all default: modules
install: modules_install

modules modules_install help clean:
    $(MAKE) -C $(KERNELDIR) M=$(pwd) $@
当我使用以下命令行运行此命令时:

make
我得到一个错误:

no rule to make target 'modules'. Stop.
我想指出的是,我的教科书建议这样做:

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

但是,在我的Debian版本(10.6.0-3)(Kernel v.4.19.0-10-amd64)中没有“build”目录,因此我将该文件更改为指向Kernel,因为我认为makefile应该指向内核。我不知道这是不是正确的选择。我的active directory是包含我的源代码的目录


我不确定如何从这一点开始。

“因此我将文件改为指向内核,因为我认为生成文件应该指向内核。”-不,
makefile
包含在内核的构建目录中。通常<内核模块的code>build子目录指向该目录。注意,“内核构建目录”和“我的模块源目录”是不同的。“我不确定如何从这一点开始。”-您需要找到内核的构建目录。类似Debian的发行版通常提供“linux headers”软件包以及它们提供的内核。您是否安装了
linux-headers-amd64
软件包?如果linux-headers-4.19.0-10-amd64是最新的内核,它应该作为依赖项安装
linux-headers-4.19.0-10-amd64
,否则需要手动安装。为什么要猜测?说明位于内核源代码中: