【发布时间】:2017-04-08 00:55:46
【问题描述】:
我在 VMWare 上安装了 Ubuntu。我的目的是在其中构建内核模块。我是初学者。我写了一个基本模块。但我无法用“Makefile”编译它。我需要解决什么问题?
C文件(kernel.c)的内容:-
#include <linux/kernel.h>
MODULE_LICENSE("GPL");
makefile 的内容:-
obj-m+=kernel.o
all:
make -C /lib/modules/$(shell uname -r)/build/ M=$(shell PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(shell PWD) clean
【问题讨论】:
-
请添加更多代码或详细信息您遇到什么问题?我在您的 Makefile 中注意到的一件事是,
make命令的开头应该有空格,例如all: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules。 -
发布代码真的太难了,不得不求助于图像文件吗?我认为当提问者在帖子中没有付出太多努力时,提供指导就更加困难了。你发布的图像总有一天会消失。这篇文章对未来的读者来说毫无价值。
-
@vinodmaverick 。我尝试了你建议的方式。它仍然有同样的问题。
-
@vinodmaverick :我在虚拟机上安装了 Ubuntu 14.04。然后安装'vim'。在主目录中,我创建了一个新目录并像上面一样创建了一个 Makefile,然后使用上面给出的内容创建了一个文件名 kernel.c。
-
TAB(\t) 是缺少的分隔符。make -C /lib/modules...行应该缩进制表符,而不是空格。
标签: c linux makefile linux-kernel