Компиляция Linux Ошибка: отсутствует разделитель - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь скомпилировать мою программу thread.c со следующим Makefile:

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 голосов
/ 05 декабря 2018

Команды в рецепте правила должны начинаться с символа табуляции.Могут последовать другие или другие пробельные символы, но главная вкладка необходима.

Ваш файл содержит правило для цели 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
0 голосов
/ 05 декабря 2018

Я полагаю, у меня была эта проблема раньше, особенно при использовании Windriver.Как правило, я просто nano конкретный файл, на который он жалуется, удалить первый пробел в строке, а затем добавить его обратно.Это странное решение, но обычно оно работает для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...