2016-10-29 2 views
-1

Я хочу, чтобы запустить этот модуль ядракомпиляции ошибка модуля ядра

код файла hello.c

#include <linux/module.h> 
#include <linux/kernel.h> 

int init_module(void) { 
    printk(KERN_INFO "Hello world!\n"); 
    return 0; 
} 
void cleanup_module(void) { 
    printk(KERN_INFO "Goodbye world!\n"); 
} 

я запускал Makefile ниже

obj-m += hello.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 -C /lib/modules/4.4.0-45-generic/build M=/home/fyousry/Desktop/Untitled Folder 4 modules 
make[1]: Entering directory '/usr/src/linux-headers-4.4.0-45-generic' 
arch/x86/Makefile:148: CONFIG_X86_X32 enabled but no binutils support 
Makefile:676: Cannot use CONFIG_CC_STACKPROTECTOR_STRONG: -fstack-protector-strong not supported by compiler 
make[1]: *** No rule to make target 'Folder'. Stop. 
make[1]: Leaving directory '/usr/src/linux-headers-4.4.0-45-generic' 
Makefile:3: recipe for target 'all' failed 
make: *** [all] Error 2 

ответ

0

Директор у которых содержит этот код имеет место , когда я извлекал пространство это работа (UntitledFolder4 вместо Untitled Folder 4)

0

Вы должны использовать двойные кавычки, когда вы даете путь к команде, особенно если путь содержит вложенную команду или Переменная. Пример:

make -C "/lib/modules/$(shell uname -r)/build" "M=$(PWD)" modules 
0

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

make -C /lib/modules/4.4.0-45-generic/build M=/home/fyousry/Desktop/Untitled\ Folder\ 4 modules