【问题标题】:Buildroot speed upBuildroot加速
【发布时间】:2016-05-12 08:23:39
【问题描述】:

对于一个项目(Arm i.mx6),我使用 buildroot 来创建我的设置。 这很好用。

我的问题是我想重新使用构建来创建安装程序。 不使用 make clean 选项。

我目前在做什么:

1]。使用文件系统覆盖编译 buildroot (A)

2]。清理干净

3]。使用文件系统覆盖编译 buildroot (B)

这需要很多时间。

我试过了:

1]。使用文件系统覆盖编译 buildroot (A)

2]。使用文件系统覆盖编译 buildroot (B) 但是随后系统覆盖 (A) 中的文件被插入到系统覆盖 (B) 中。

我需要 A 和 B,因为在 B 中我有安装程序脚本和 A 的 Tar.gz 结果。 我在 B 中不想要的是 A 的脚本,因为 A 具有我在 B 中不需要的网络设置。

【问题讨论】:

    标签: compilation buildroot


    【解决方案1】:

    目前在 buildroot 中没有真正的好方法来实现这一点。可以单独构建您的工具链并将其用于两种构建配置。换句话说,您将拥有三种配置:

    toolchain_defconfig
    overlay_a_defconfig
    overlay_b_defconfig
    

    toolchain_defconfig 应该设置BR2_HOST_DIR 指向一个永久位置,例如/opt/toolchain。其他配置应使用基于该位置的自定义外部工具链。

    此选项仅适用于工具链本身(因此编译器和 libc)。无法使用其他库扩展工具链并在构建中使用它们。

    第二种可能性是启用 BR2_CCACHE。 ccache 能够避免大多数实际的编译步骤。这对于大型包(Qt、Webkit、Node 等)特别有用。

    最后,如果您的两个配置之间唯一的区别是覆盖,您还可以选择使用 buildroot 构建除覆盖之外的所有内容,并编写自定义脚本来组合 buildroot 生成的 tarball使用您的叠加层并从中创建最终的 rootfs。

    【讨论】:

    • 感谢您的回答,此刻我已经决定重建只是生活中的一个事实。两个脚本的维护将产生比一夜之间重建更大的影响。
    【解决方案2】:

    据我了解,您只需要两个“独立”的根文件系统。您可以创建两个文件夹并将它们与两个不同的配置一起使用:

    cd buildroot
    mkdir rootfsa
    mkdir rootfsb
    make O=rootfsa menuconfig
    make O=rootfsa
    make O=rootfsb menuconfig
    make O=rootfsb
    

    现在您有两个不同的rootfs.tar 文件:一个在rootfsa/images,另一个在rootfsb/images

    【讨论】:

    • 感谢您的回答。然而,这仍然需要很长时间来编译。我正在寻找的是:1]。编译所有库一次。 2]。为 rootfsa 构建根文件系统。 3]。为 rootfsb 构建根文件系统。
    猜你喜欢
    • 2018-08-02
    • 2018-03-03
    • 2018-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多