编译完linux内核之后,我需要在我的磁盘中保留一个巨大的源目录,以便进一步编写外部模块。
我不能简单地运行 make clean ,因为当我以这种方式编译某些模块时,这会让我失望:
$ make -C /lib/modules/`uname -r`/build
我粗略地阅读了内核源码的Makefile,但似乎没有目标可以完成这项工作。
问题:
我应该从工作的linux源目录中复制哪些文件有价值,以便进一步使用编译外部模块?
答案 0 :(得分:2)
通过尝试针对干净的内核源构建外部模块,很容易弄明白。您可以注意到下一个错误:
错误:内核配置无效。
include/generated/autoconf.h
或include/config/auto.conf
缺失。在内核src上运行
make oldconfig && make prepare
来修复它。
和
警告:符号版本转储
./Module.symvers
缺失;模块没有依赖关系和modversions。
要确保所有需要的文件到位,请执行下一步:
Module.symvers
和.config
个文件。现在你可以清理内核了:
$ make distclean
将存储的.config
文件复制回内核源目录并执行下一步:
$ make modules_prepare
修复了第一个错误。
将存储的Module.symvers
文件复制回内核源目录。这修复了第二个错误。
就是这样。您已准备好在内核源代码中使用最少的构建文件构建外部模块。
您实际上并不需要所有内核源文件来构建外部模块。您只能留下下一个文件:
.
├── arch
│ └── x86/*
├── include/*
├── scripts/*
├── Makefile
└── Module.symvers