Makefile:4: *** missing separator。 停止。
时间: 2025-08-05 10:44:41 浏览: 4
---
### ❓错误原因:
`Makefile:4: *** missing separator. Stop.` 是 GNU `make` 工具报出的常见错误,意思是 **Makefile 中某条规则缺少分隔符**。
在 Makefile 中,**命令行前必须使用 Tab 字符**(`\t`),而不能使用空格(space)。如果你使用的是空格来缩进命令,就会出现这个错误。
---
### ✅ 正确的 Makefile 格式:
```makefile
obj-m += hello_module.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
```
注意:
- `all:` 和 `clean:` 下面的命令行必须以 **Tab** 开头。
- `obj-m += hello_module.o` 表示构建一个内核模块。
---
### ✅ 解决方法:
#### 方法 1:使用 Vim 编辑器检查并修复缩进
如果你使用 `vim` 编辑 Makefile,可以执行以下命令查看是否使用了空格:
```vim
:set list
```
这会显示所有的空白字符:
- `^I` 表示 Tab
- 空格显示为 ` `
#### 方法 2:使用 `unexpand` 命令将空格转为 Tab
```bash
unexpand -t 4 Makefile > Makefile.tmp && mv Makefile.tmp Makefile
```
这会将 4 个空格转为一个 Tab。
#### 方法 3:确保编辑器使用真正的 Tab
如果你使用的是 VSCode、Sublime Text、Atom 等编辑器,请确保:
- 设置中启用了“插入 Tab 而不是空格”
- 或者保存时自动将开头的空格转为 Tab
---
### ✅ 示例修复后的 Makefile:
```makefile
obj-m += hello_module.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
```
✅ 确保 `make` 前是 Tab,不是空格!
---
### 🧪 编译流程验证:
```bash
make clean
make
sudo insmod hello_module.ko
dmesg | tail
sudo rmmod hello_module
dmesg | tail
```
---
阅读全文
相关推荐




















