Linux产生错误:缺少分隔符

时间:2018-12-05 13:48:22

标签: c linux makefile pthreads

我正在尝试使用以下Makefile编译程序thread.c

ifneq ($(KERNELRELEASE),)
obj-m := thread.o
else

KERNELDIR ?= /lib/modules/$(shell uname -r)/build

PWD := $(shell pwd)

default:
       $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif

运行make时出现错误

  

Makefile:10:***缺少分隔符。停止。

我没有找到造成此问题的原因,有人可以帮助我解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

规则配方中的命令均必须以制表符开头。可能会有更多或其他空白,但是前导标签是必不可少的。

您的文件包含目标default的规则,但是其配方中的单个命令并非以制表符(或任何空白)开头。原来那是第10行(假设您已经提交了整个文件),这确实是make的诊断所暗示的行号。只需插入标签即可。就个人而言,我还将在endif之前添加一个空白行,但这是一种样式建议,而不是一项要求。发挥作用:

ifneq ($(KERNELRELEASE),)

obj-m := thread.o

else

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

default:
    $(MAKE) -C $(KERNELDIR) M=$(PWD) modules

endif

答案 1 :(得分:0)

我相信我以前遇到过此问题,尤其是在使用windriver时。通常,我只是nano它抱怨的特定文件,删除该行中的第一个空格,然后再添加回去。这很奇怪,但通常对我有用。