使用bitbake进行分布式编译

时间:2013-01-23 03:53:36

标签: build distributed distcc bitbake

你知道如何使用分布式bitbake编译构建一个oe项目吗? 我想到了distcc。

export PATH=~/distcc/bin:$PATH
make -jn CC=linux-gcc

make会从我指向distcc的路径调用linux-gcc distcc会将任务安排到所有已知主机 -jn将创建make的n6个实例 它工作正常 但是现在我想用bitbake来使用distcc 我知道如何在bitbake中使用-jn 只需使用export PARALLEL_MAKE=-jn

即可

但是如何使用bitbake导出PATH=~/distcc/bin:$PATH distcc/bin必须站在$PATH前面 但bitbake会将$PATH_prepend(放在org.openembedded.dev/conf/bitbake.conf中)放在$PATH前面。

或者有人使用另一种工具来更好地使用bitbake进行分布式构建?

2 个答案:

答案 0 :(得分:15)

尝试冰淇淋:https://github.com/icecc/icecream/blob/master/README.md

  

与distcc一样,Icecream从构建中获取编译作业,并将其分发到允许并行构建的远程机器中。但与distcc不同,Icecream使用一个中央服务器,可以将编译作业动态调度到最快的免费服务器。

OpenEmbedded和Yocto Project都支持Icecream。见https://git.yoctoproject.org/cgit.cgi/poky/plain/meta/classes/icecc.bbclass

安装Icecream,然后将以下内容添加到 site.conf local.conf

INHERIT += "icecc"

# This value overrides PARALLEL_MAKE when ICECC is enabled
# This would enable icecc for local and cross
ICECC_PARALLEL_MAKE = "-j 24"

答案 1 :(得分:1)

使用并行性调用构建的稍微多一点BitBake-ish方法是编辑local.conf并取消注释BB_NUMBER_THREADS和PARALLEL_MAKE,并将它们的值设置为您拥有的核心数的两倍。现在,无论何时调用BitBake,它都将使用这些值。