Модуль ядра делает проблему с файлом - PullRequest
0 голосов
/ 05 сентября 2010

Это первый раз, когда я пытаюсь собрать модуль Kernal. Ниже приведен файл make. При запуске make команда. Я получаю ошибку

/ bin / sh: синтаксическая ошибка: "(" неожиданная

make: *** [all] Ошибка 2

obj-m =mod.o
obj-m +=depmod.o

obj-m +=mod1.o
obj-m +=mod2.o
obj-m +=mod3.o


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

all:
        $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
clean: 
        rm -rf $(wildcard *.o *.ko *.mod.* .c* .t* test Module.symvers *.order *.markers)

Ответы [ 2 ]

1 голос
/ 05 сентября 2010

Релиз ядра (заданный uname -r) может содержать круглые скобки, и в этом случае я готов поспорить, что это так. Это означает, что а) он не работает как часть пути, и б) оболочка не любит получать его в середине команды Make. Я предлагаю вам перевести скобки, скажем, в подчеркивание:

KDIR=/lib/modules/$(shell uname -r | sed s/[\(\)]/_/g)/build

(uname -r также может дать вам косую черту, с которой вы можете справиться таким же образом, если придется).

0 голосов
/ 21 ноября 2010

Вы должны правильно процитировать аргументы, т.е.

${MAKE} -C "${KDIR}" M="${PWD}" modules

Также для clean: вы должны аналогичным образом использовать

${MAKE} -C "${KDIR}" M="${PWD}" clean

вместо того, чтобы пытаться сопоставить все файлы, сгенерированные Kbuild самостоятельно, с некоторыми символами подстановки (это просто не годится для будущего).

...