构建简单的内核模块 mkmakefile:没有这样的文件或目录

问题描述

我正在 linux 上编译和构建简单的内核模块

以下是我的Makefile

    obj-m    := hello-1.o
    KDIR    := /lib/modules/$(shell uname -r)/build
    PWD    := $(shell pwd)

   default:
           $(MAKE) -C $(KDIR) SUBDirs=$(PWD) modules

   clean:
            rm -rf *.o *.ko *.mod.* *.symvers *.order

当我对 makefile 运行 make 命令时,出现 mkmakefile 丢失

错误

make[1]: 进入目录'/usr/src/linux-headers-5.9.0-kali2-amd64'

sh: 0: 无法打开 /usr/src/linux-headers-5.9.0-kali2-common/scripts/mkmakefile: 没有那个文件 make[3]: *** [/usr/src/linux-headers-5.9.0-kali2-common/Makefile:552: outputmakefile] 错误 2 /usr/src/linux-headers-5.9.0-kali2-common/Makefile:691: include/config/auto.conf.cmd: 没有那个文件或目录 make[2]: *** [/usr/src/linux-headers-5.9.0-kali2-common/Makefile:710: include/config/auto.conf.cmd] 错误 2 make[1]: *** [/usr/src/linux-headers-5.9.0-kali2-common/Makefile:185: __sub-make] 错误 2 make[1]: 离开目录'/usr/src/linux-headers-5.9.0-kali2-amd64'

enter code here

make: *** [Makefile:6: default] 错误 2

来自本页https://forums.kali.org/showthread.php?46712-Kali-2020-1-VMWARE-installing-Alfa-AWUS036ACM

我在下面一行更改了我的 make 文件

   default:
           $(MAKE) -C $(KDIR) M=$(PWD) modules

现在它给出了不同的错误auto.conf 丢失

make -C /lib/modules/5.9.0-kali2-amd64/build M=/home/fawad/Desktop/infoFolder/Linux/KernelDevelopment/hell modules make[1]: 进入目录'/usr/src/linux-headers-5.9.0-kali2-amd64' 错误:内核配置无效。 缺少 include/generated/autoconf.h 或 include/config/auto.conf。 在内核 src 上运行“make oldconfig && make prepare”来修复它。 make[2]: *** [/usr/src/linux-headers-5.9.0-kali2-common/Makefile:718: include/config/auto.conf] 错误 1 make[1]: *** [/usr/src/linux-headers-5.9.0-kali2-common/Makefile:185: __sub-make] 错误 2 make[1]: 离开目录 '/usr/src/linux-headers-5.9.0-kali2-amd64' make: *** [Makefile:6: default] 错误 2

我在 Internet 上发现我必须在 make prepare 中针对 Makefile 运行 /usr/src/linux-headers-5.9.0-kali2-common/Makefile 命令,但现在它再次给我第一个错误

sh: 0: 无法打开 /usr/src/linux-headers-5.9.0-kali4-common/scripts/mkmakefile: 没有那个文件 /usr/src/linux-headers-5.9.0-kali4-common/Makefile:691: include/config/auto.conf.cmd: 没有那个文件或目录 make[1]: *** [/usr/src/linux-headers-5.9.0-kali4-common/Makefile:710: include/config/auto.conf.cmd] 错误 2 make: *** [/usr/src/linux-headers-5.9.0-kali4-common/Makefile:185: __sub-make] 错误 2

我想知道如何配置 make 和 linux 以便我可以构建外部模块?喜欢这个

    #include <linux/init.h>
    #include <linux/module.h>
    MODULE_LICENSE("Dual BSD/GPL");

    static int hello_init(void)
    {
        printk(KERN_ALERT "Hello,world\n");
        return 0;
    }
    static void hello_exit(void)
    {
        printk(KERN_ALERT "Goodbye,cruel world\n");
    }
    module_init(hello_init);
    module_exit(hello_exit);

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)