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

我正在尝试针对文件系统上的任何源代码树编译模块,但我遇到了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'

我已经尝试了很多文档,但没有运气.我非常感谢任何帮助.

最佳答案
目标是让它针对任何源树进行编译

你可以提供一个编译的源代码路径

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

有了这个

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

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

尝试下面的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 -\u0026gt; to .–\u0026gt;你的sr-code KERNEL_SOURCE:=< compile-src-code的路径>

有关更多信息,请在下面找到

while building kernel modules why do we need /lib/modules?

A simple program on linux device driver

How to make a built-in device driver in linux

转载注明原文:linux – 针对文件系统上的任何内核源代码树编译树外内核模块 - 代码日志