【问题标题】:Linux kernel re-compilation too slowLinux内核重新编译太慢
【发布时间】: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


【解决方案1】:

编译内核总是需要很长时间,不幸的是除了拥有一个非常好的处理器和很多多线程之外没有其他办法,但是在像这样的大型项目中,ccache 将极大地帮助编译时间,它并不完美,但比仅仅编译对象要好得多。

在初始编译时您不会看到差异,但它会通过使用它生成的缓存而不是编译之前已经编译的大部分内容来加速重新编译。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-09
    • 2012-06-26
    • 2013-09-27
    • 1970-01-01
    • 2015-07-19
    • 2011-05-03
    • 2018-04-19
    相关资源
    最近更新 更多