【发布时间】:2021-02-03 15:52:12
【问题描述】:
我正在一个 VM(虚拟机)中编译 Linux 内核,其中分配了 2 个 4GB 和 8 个 CPU 中的 4 个。我最初的编译花了大约 8-9 个小时,而且我也在使用 make -j4 优化。现在我向内核添加了一个简单的系统调用并运行了 make -j4 并且它已经编译了过去 3 个小时。我认为在初始编译之后,make 只会编译小的更改,但它似乎正在编译所有内容(主要是驱动程序)。有什么办法可以加快这个编译过程?
例如,无论如何我可以禁用一些我并不真正需要的驱动程序,例如,如果我只想实现一个简单的系统调用,我真的不需要所有的网络驱动程序,也许这会加快速度?即,我只希望内核的最低功能来测试我的系统调用。
【问题讨论】:
-
您应该为您的 VM 提供更多内存和 CPU,或者在本机而不是在虚拟机中构建。还要检查您是如何配置虚拟磁盘的。至于为什么一切都在重建,这取决于您更改了哪些文件。如果您更改了所有或大多数驱动程序包含的公共文件,则 make 将全部重建它们。因此,这取决于您在添加简单系统调用时触及的代码部分。
-
@MadScientist,这是 hello world 系统调用,我为它修改了 syscalls.h 文件。我认为这在所有驱动程序中都用作标题,所以这可能是原因。我的内存最大限制为 4gb,而我的主机操作系统是 Windows,所以我真的无法超越。
-
您绝对可以禁用所有驱动程序并使用最小配置。您还应该检查是否正在交换。
-j4的可用内存可能太多了。
标签: linux makefile compilation linux-kernel kernel