无法编译内核模块

时间:2015-05-19 13:29:34

标签: kernel

我正在尝试在ubuntu中构建一个简单的内核,以下是执行此操作时出现的错误。

make -C /lib/modules/3.13.0-52-generic/build M= modules
make[1]: Entering directory `/usr/src/linux-headers-3.13.0-52-generic'
make[1]: Makefile: No such file or directory
make[1]: *** No rule to make target `Makefile'.  Stop.
make[1]: Leaving directory `/usr/src/linux-headers-3.13.0-52-generic'
make: *** [all] Error 2

我的Make文件:

obj-m := module1.o 
KERNEL = $(shell uname -r)
all: 
    make -C /lib/modules/$(KERNEL)/build M=$(PWD) modules
clean: 
    make -C /lib/modules/$(KERNEL)/build M=$(PWD) clean

任何人都可以帮助我。

注意:我已经下载了内核源代码

1 个答案:

答案 0 :(得分:1)

在使用之前,您应该在Makefile中设置PWD变量。 E.g。

PWD = $(shell pwd)

<强>更新: 另外,Makefile混合了两种模式:KBuild模式(obj-m := module1.o)和普通makefile模式(所有其他行)。您应该区分模式(使用if)或使用两种不同的文件用于两种模式:

生成文件:

KERNEL = $(shell uname -r)
PWD = $(shell pwd)
all: 
    make -C /lib/modules/$(KERNEL)/build M=$(PWD) modules
clean: 
    make -C /lib/modules/$(KERNEL)/build M=$(PWD) clean

的kbuild:

obj-m := module1.o