编译文件系统上任何内核源代码树的树外内核模块

我正在尝试编译一个模块来防止文件系统上的任何源代码树,但是我遇到了Makefile的问题。 这是我针对内核指定的原始Makefile:

obj-m += new-mod.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 

这个Makefile可以正确编译,但是目标是让它在任何源码树上编译。 我已经试过了:

 obj-m += new-mod.o 

我认为,“所有:”是假设,但我得到的错误:

 make: *** No targets. Stop. 

我还补充说:

 all: 

到Makefile没有区别,除了错误消息:

 make: Nothing to be done for `all' 

我已经尝试了很多文档,但没有运气。 我将不胜感激任何帮助。

Solutions Collecting From Web of "编译文件系统上任何内核源代码树的树外内核模块"

goal is to have it compile against any source tree

你可以做它提供一个compiled source-code path

只需要替换make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

有了这个

make -C <path-to-compiled-src-code> M=$(PWD) modules

make -C /home/vinay/linux-3.9 M=$(PWD) modules

尝试下面的makefile

Makefile –

 # if KERNELRELEASE is defined, we've been invoked from the # kernel build system and can use its language. ifneq (${KERNELRELEASE},) obj-m := new-mod.o # Otherwise we were called directly from the command line. # Invoke the kernel build system. else KERNEL_SOURCE := /usr/src/linux PWD := $(shell pwd) default: ${MAKE} -C ${KERNEL_SOURCE} SUBDIRS=${PWD} modules clean: ${MAKE} -C ${KERNEL_SOURCE} SUBDIRS=${PWD} clean endif 

在上面你可以把KERNEL_SOURCE := /usr/src/linux >改成KERNEL_SOURCE := /usr/src/linux >你的sr-code KERNEL_SOURCE := <path to compiled-src-code>

欲了解更多信息,请点击下面的链接

在构建内核模块时,为什么我们需要/ lib / modules?

一个简单的程序在Linux设备驱动程序

如何在linux中创建一个内置的设备驱动程序