在ubuntu上使用linux source编译模块

时间:2017-06-28 16:48:46

标签: linux ubuntu linux-kernel

04.2,4.8.0-36-通用内核,由于缺少内核源代码中包含的文件,我无法仅使用linux头编译模块,我使用{{1}下载了内核源代码}

  

生成文件

apt-get source linux-image-$(uname -r)
  

/ lib / modules / $(uname -r)/ build

的内容
obj-m+=modyy.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
  

编译失败

$ ls -al /lib/modules/$(uname -r)/build
lrwxrwxrwx 1 root root 39  27 14:37 /lib/modules/4.8.0-36-generic/build -> /usr/src/linux-headers-4.8.0-36-generic

我尝试从ERROR: Kernel configuration is invalid. include/generated/autoconf.h or include/config/auto.conf are missing. Run 'make oldconfig && make prepare' on kernel src to fix it. WARNING: Symbol version dump ./Module.symvers is missing; modules have no dependencies and modversions. 核心源/lib/modules/4.8.0-36-generic/build创建链接 但它编译失败,这是使用内核源代码编译的正确方法吗?

如何使用内核源代码编译模块?

感谢。

1 个答案:

答案 0 :(得分:0)

不要为完整的内核源创建符号链接,只需安装名称为linux-headerslinux-headers-generic的内核头文件包。对于4.8.0-36通用内核,这是linux-headers-4.8.0-36-generic包:https://packages.ubuntu.com/xenial-updates/linux-headers-4.8.0-36-generic

 sudo unlink /lib/modules/4.8.0-36-generic/build
 sudo apt-get install linux-headers-4.8.0-36-generic

您还可以安装dkms,它将安装构建Linux内核模块所需的一切:sudo apt-get install dkms

从构建到完整内核源代码的符号链接无济于事,因为完整源代码树没有为当前内核构建模块所需的配置文件,很难生成它们来获取由其他人构建的内核的兼容模块。只需使用"标题"来自同一个人的包裹。