Fady Yousry
Fady Yousry

Reputation: 171

compile kernel module error

I wish to run this kernel module

code file 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");
}

i ran the makefile below

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

but I am getting the following errors

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

Upvotes: 0

Views: 1150

Answers (3)

Xephi
Xephi

Reputation: 431

You can also escape the space if you want to keep it spaced :

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

Upvotes: 0

Hugal31
Hugal31

Reputation: 1768

You should use double quotes when you give a path to a command, especially if the path is contain a sub-command or a variable. Example:

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

Upvotes: 0

Fady Yousry
Fady Yousry

Reputation: 171

the directory which Contain this code has space when i removed space it is work (UntitledFolder4 instead of Untitled Folder 4)

Upvotes: 1

Related Questions