一、本地编译环境
1、安装编译 kernel 的工具
apt install git gcc make flex bison libssl-dev lz4
apt install python pip
2、scp 本机的 .ssh 文件夹到板端,然后 git clone kernel 代码
3、编译代码
make ARCH=arm64 rockchip_linux_defconfig
time make ARCH=arm64 rk3588-xxx.img -j16
二、分布式编译环境
1、安装 C/C++ 分布式编译工具
apt install distcc distccmon-gnome
2、修改服务器端和客户端的 /etc/default/distcc 配置
STARTDISTCC="true" #开机自启动
ALLOWENDETS="127.0.0.1 192.168.31.0/24" #192.168.31.xxx为RK3588的IP 地址
LISTENER=""
ZEROCONFIG="false"
3、在服务器端和客户端启动 distccd 服务:
/etc/init.d/distcc stop
/etc/init.d/distcc start
4、在客户端设置服务器端IP地址(.19为客户端IP地址,distcc部署允许localhost作为服务器端)
export DISTCC_HOSTS="192.168.31.19 192.168.31.251 192.168.31.100"
5、在客户端编译代码
make ARCH=arm64 rockchip_linux_defconfig
time make ARCH=arm64 rk3588-xxx.img -j32 CC="distcc /usr/bin/gcc"
三、编译测试结果
对于 分布式RK3588 编译 的场景,粗略手动调整编译服务端的负载均衡之后,干净编译 RK3588 的 kernel 生成 30M 的内核 Image 的耗时如下
time | RK3588 | 分布式 RK3588 x1 | 分布式 RK3588 x2 | 分布式 RK3588 x3 | i7-1165G7@2.80G | |
real | 8m41.081s | 8m31.613s | 5m0.604s | 3m47.136s | 6m24.822s | 3m35.845s |
user | 56m35.906s | 56m56.541s | 24m55.459s | 15m7.921s | 44m3.944s | 57m57.281s |
sys | 6m7.484s | 5m49.619s | 4m5.039 | 3m5.729s | 3m5.943s | 4m12.297s
|
https://github.com/distcc/distcc