linux - 不同的 'make' 行为

标签 linux makefile kernel-module

我正在尝试为内核模块编写一个 makefile,但无法让它工作。运行以下有这个输出

$ make
make: Nothing to be done for 'all'.

但是直接在终端上运行make命令会导致

$ make -C /lib/modules/$(uname -r)/build M=$(pwd) modules
make: Entering directory '/usr/src/linux-headers-3.5.0-17-generic'
   CC [M] <blah>
   Building modules, stage 2
   <blah>
make: Leaving directory...

我的Makefile的内容是(源文件是main.c)

obj-m += main.o
all:
    make -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) modules

在尝试使用 makefile 之前,我确实删除了 *.o 和 *.ko。将 all 更改为 default 也没有任何作用。

最佳答案

最有可能的问题是您没有使用真正的 制表符来开始阅读make -C ... 的行,而是使用了多个空格。 make 要求所有命令都以制表符开头。

关于linux - 不同的 'make' 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14226425/

相关文章:

linux - 如何覆盖 Windows/Linux 中的复制粘贴功能?

linux - 在 Linux 中使用符号链接(symbolic link)将文件从一个位置 move 到另一个位置

c - 自动从静态库中删除文件

makefile - ifeq( $(foo), ) 和 ifndef foo 有什么区别

linux-kernel - 插入外部交叉编译的 SPARC Linux 模块时出现重定位错误

linux - 在 Windows 上打开 Linux 文件

linux - 是否可以在 Linux 上的用户空间中分配不可缓存的内存块?

c++ - 基于编译器选项的已编译二进制路径

linux - 在linux内核3.x模块中,我如何使用Kprobe来计算系统调用?

linux - 杂项设备驱动程序 : Unable to open the device with open() system call