我正在尝试“Linux 内核模块编程 - 编译模块”,如下所示这Youtube 视频。
首先我创建了一个hello.c
程序。然后我使用了命令#gedit Makefile
。它在 gedit 中打开了一个空白窗口。
我尝试复制相同的命令,但运行 make 命令
它显示一个错误:
make:*** No rule to make target 'make', needed by 'all'. Stop.
搜索一些我尝试过的 Ubuntu 表单:
sudo apt-get install build essentials
sudo apt-get install make
sudo apt-get install autoconf automake
每次我执行此命令时都会安装一些包。
我去登记了:
root@ubuntu: /lib/modules/3.5.0-17-generic/build
输入命令时我可以看到“Makefile” ls
,但我仍然遇到同样的问题,
make
命令仍然无法工作,因为gedit Makefile
命令打开了一个空白编辑器。
答案1
正如 Gerhard 所说,这是 makefile 的问题。
在视频中,作者准备了一个makefile,因此您需要将他的说明复制到您自己的make文件中。
我自己尝试了他的说明,并确保准确复制了 Makefile,效果很好,因此,如果您仔细检查文件是否有错误,您有望找到它。这是我的文件,可以正常工作,您可以通过复制它来节省一些时间。
obj-m += hello.o
KDIR=/usr/src/linux-headers-3.5.0-22-generic/
all:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
rm -rf *.ko *.o *.mod.* *.symvers *.order
关于 Makefile 需要注意的一点是,视频中没有提到,在这一部分中
all:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
该$(MAKE)
行必须用 TAB 缩进,不是空格。