【问题标题】:compile kernel module error编译内核模块错误
【发布时间】:2016-10-30 04:16:15
【问题描述】:

我希望运行这个内核模块

代码文件 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

【问题讨论】:

    标签: c linux kernel


    【解决方案1】:

    包含此代码的目录有空间 当我删除空间时,它是工作(UntitledFolder4 而不是Untitled Folder 4

    【讨论】:

      【解决方案2】:

      在为命令提供路径时,应使用双引号,尤其是当路径包含子命令或变量时。 示例:

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

      【讨论】:

        【解决方案3】:

        如果你想保持间隔,你也可以逃避空间:

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

        【讨论】:

          猜你喜欢
          • 2012-11-19
          • 1970-01-01
          • 2017-10-01
          • 2012-03-10
          • 2020-09-11
          • 2011-05-03
          • 1970-01-01
          相关资源
          最近更新 更多