如何解决内核配置无效问题

Woo*_*yun 5 linux-device-driver linux-kernel

我正在尝试构建模块。

但是这里有一些问题。

错误:内核配置无效。缺少 include/generated/autoconf.h 或 include/config/auto.conf。在内核 src 上运行“make oldconfig && make prepare”来修复它。

警告:符号版本转储 ./Module.symvers 丢失;模块将没有依赖项和 modversions。`

这是我的 makefile

ifeq ($(KERNELRELEASE),)


KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)

modules:
    $(MAKE) -C $(KERNELDIR) M=$(PWD) modules

modules_install:
    $(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install

clean:
    rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions

.PHONY: modules modules_install clean

else
    # called from kernel build system: just declare what our modules are
    obj-m := hello.o hellop.o seq.o jit.o jiq.o sleepy.o complete.o \
             silly.o faulty.o kdatasize.o kdataalign.o
endif
Run Code Online (Sandbox Code Playgroud)

我尝试像这样构建:

export KERNELDIR=/path/to/extern/linux/source
make
Run Code Online (Sandbox Code Playgroud)

我怎么解决这个问题?

Wil*_*ens 16

步骤1

重新安装linux-headers.


先决条件

  • 终端接入( bash presumably)
  • 根权限
    • (或可以执行“sudo”的用户)

首先,我们尝试重新安装(使用 APT)该linux-headers软件包 -添加您的特定内核版本。由以下命令确定:$(uname -r)

并在一行中完成所有操作:


sudo apt install --reinstall linux-headers-$(uname -r)

然后,当我们谈论内核并对其进行更改(也非常重要,即重新安装内核)时,我们希望在 APT 命令完成后立即重新启动:


sudo reboot

如果您发现找不到任何软件包(或类似的软件包)(来自 apt),请尝试apt update并重试上述操作。


日志

请检查 /var/log/kern.log 是否有任何消息,

  • cat /var/log/kern.log


And*_*kin 3

我用以下命令解决了这个问题:

  1. .config从您构建的源中获取带有内核配置的最新文件。将其复制到kernel-source目录(例如build/tmp/work-shared/lmm-corei7/kernel-source:)。
  2. 跑步make prepare