1

我正在尝试在用户模式 ​​Linux 中的模块上运行“make”来安装一个简单的 makefile。这是我的制作文件:

obj-m    := hello.o

KDIR    := /lib/modules/$(shell uname -r)/build
PWD    := $(shell pwd)

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

当我在用户模式 ​​Linux 中运行它时,出现以下错误:

make[1]: 进入目录`/lib/modules/2.6.28/build'
make[1]: *** 没有规则来制作目标“模块”。停止。
make[1]: 离开目录`/lib/modules/2.6.28/build'
make: *** [默认] 错误 2

问题是没有文件存在于/lib/modules/. 没有 2.6.28 或 build 的目录。根据我的阅读,这些应该是指向的符号链接/usr/src,但在 下/usr/src,我也看不到任何文件。

4

2 回答 2

1

您的 UML 内核的源代码和头文件必须用于为其编译模块。

您可以在 UML 内或仅在主系统中编译它,但您必须使用 UML 的内核头文件和构建脚本

于 2010-03-22T00:45:33.567 回答
0

您需要构建和安装您正在编译的内核版本。从kernel.org获取源代码,配置(我认为make menuconfig是从正在运行的内核中获取配置),构建并安装它。您可以在普通用户下在您的主目录中进行构建,当然您需要 root 来安装它。

编辑:

以防万一你错过了——这里是用户模式 ​​Linux HOWTO。它包含用于构建和安装内核和模块的特定项目。希望这可以帮助。

于 2010-03-21T20:55:09.930 回答