【问题标题】:How can I rebuild Ubuntu kernel sources without recompiling any of unchanged files?如何在不重新编译任何未更改文件的情况下重建 Ubuntu 内核源代码?
【发布时间】:2014-06-30 12:03:06
【问题描述】:

我记得,当我从纯 Linux 内核源代码树重建映像(不止一次)时,基本上,构建系统只编译更改的代码,并将它们与之前编译的其他未更改的目标文件增量链接。

但是,我找不到任何选项可以让 Ubuntu 内核构建系统以相同的方式构建映像。简而言之,一行更改需要很长时间才能编译和链接。是否有任何选择,或任何替代做法?

这是我以 Ubuntu 方式构建内核映像的 shell 命令。

fakeroot debian/rules -j8 binary-headers binary-generic

我当前的内核源代码版本如下。

3.13.0-XXX-generic

【问题讨论】:

    标签: ubuntu linux-kernel makefile debian


    【解决方案1】:

    我也有同样的问题,但不幸的是,我不再相信 Andreas Bombe 的回答是正确的。查看定义了deb-pkgscripts/package/Makefile,配方的第一行是$(MAKE) clean

    我认为您希望在 Makefile 中定义下一个目标:bindeb-pkg,它几乎可以执行相同的操作(我认为它不会构建源代码的 tar 球)而无需清理。有关详细信息,请参阅 Makefile。

    【讨论】:

      【解决方案2】:

      看起来您正在使用 Ubuntu 的脚本来构建发行版的内核包。如果他们像 Debian 一样,他们会重建一切,我想。

      除非您确实需要完全重新创建包,否则不要使用它们。而是使用make -j8 deb-pkg,它将为您构建软件包,而不会强制使用make clean

      【讨论】:

      • 这在 2020 年似乎不再正确:只需执行 make -j8 deb-pkg,它将执行的第一个是:make clean
      【解决方案3】:

      执行“make bindeb-pkg”,只重建内核而不强制执行 make clean 但请记住,在某些情况下,此构建可能会产生无法启动的内核,或者根本无法编译,具体取决于您在内核配置中所做的更改。

      【讨论】:

        猜你喜欢
        • 2013-12-31
        • 1970-01-01
        • 1970-01-01
        • 2013-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-05
        • 1970-01-01
        相关资源
        最近更新 更多