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
创建链接
但它编译失败,这是使用内核源代码编译的正确方法吗?
如何使用内核源代码编译模块?
感谢。
答案 0 :(得分:0)
不要为完整的内核源创建符号链接,只需安装名称为linux-headers
或linux-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
从构建到完整内核源代码的符号链接无济于事,因为完整源代码树没有为当前内核构建模块所需的配置文件,很难生成它们来获取由其他人构建的内核的兼容模块。只需使用"标题"来自同一个人的包裹。