如何在没有系统Makefile的情况下编译Linux内核模块

问题描述 投票:0回答:1

我有arm-linux设备,没有内核的Makefile来构建内核模块。

我有gcc交叉编译器到此拱门。

没有内核的Makefile,如何编译内核模块?

linux gcc linux-kernel cross-compiling kernel-module
1个回答
0
投票

没有内核的Makefile,如何编译内核模块?

你不能。您需要内核Makefile来编译模块以及预构建的内核源代码树。在大多数发行版中,您可以通过linux-headers-xxx之类的软件包获取用于构建模块的内核源,其中xxx应为uname -r的输出。


例如,在Debian或Ubuntu上:

sudo apt-get install linux-headers-$(uanme -r)

然后您将在/lib/modules/$(uname -r)/build处找到构建模块所需的文件,并且可以使用Makefile来构建模块,如下所示:

KDIR  := /lib/modules/$(shell uname -r)/build
PWD   := $(shell pwd)
obj-m := mymodule.o     # same name as the .c file of your module

default:
    $(MAKE) -C $(KDIR) M=$(PWD) modules

这基本上是调用内核Makefile告诉它在当前目录中构建模块。

© www.soinside.com 2019 - 2024. All rights reserved.