注意
- 服务器端与客户端系统的版本号需为Ubuntu20.04
- ccache版本不能低于4.4
- 执行用户需要为sudo权限
- 服务器端nfs目录权限必须为nobody:nogroup
一、服务端配置:
在服务器192.168.60.142上配置 NFS 共享
1.安装 NFS 服务器:
1 | sudo apt-get install nfs-kernel-server |
2. 编辑 /etc/exports 文件,添加共享目录,本次以/data/nfsroot目录作为共享缓存目录:
1 | /aosp/pvt1/nfsdata *(rw, sync ,no_subtree_check,all_squash,anonuid=65534,anongid=65534) |
3. 赋权
1 2 | sudo chown -R nobody:nogroup /aosp/pvt1/nfsdata sudo chmod -R 777 /aosp/pvt1/nfsdata |
4. 重新启动 NFS 服务:
1 2 3 4 5 6 | # 重新导出所有共享目录 sudo exportfs -a # 重新启动 NFS 服务,使新配置生效 sudo systemctl restart nfs-kernel-server # 确保 NFS 服务在系统启动时自动运行 sudo systemctl enable nfs-kernel-server |
5. ccache参数配置
1 2 3 4 5 6 7 8 9 | # ccache参数配置 echo ' export PATH= "$HOME/bin:$PATH" export USE_CCACHE=1 export CCACHE_COMPRESS=1 export CCACHE_DIR= "/aosp/pvt1/.nfsroot/.ccache" export CCACHE_EXEC= /usr/bin/ccache ${CCACHE_EXEC} -M 1T ' >>~/.bash_profile |
二、客户端配置
1.安装配置ccache
1.1 下载ccache(如下载不了则可从本页面附件中下载)
1 | curl -Lo ~ /ccache-4 .10.1-linux-x86_64. tar .xz https: //github .com /ccache/ccache/releases/download/v4 .10.1 /ccache-4 .10.1-linux-x86_64. tar .xz |
1.2 配置ccache
1 2 3 4 5 6 7 | # 解压ccache cd ~ tar xvf ccache-4.10.1-linux-x86_64. tar .xz # 拷贝到/usr/bin目录下 (用which ccache先查找/usr/bin目录下是否已存在ccache,如有则删除或备份) if [ -f "/usr/bin/ccache" ]; then sudo mv /usr/bin/ccache /usr/bin/ccache .bak; fi sudo cp ccache-4.10.1-linux-x86_64 /ccache /usr/bin/ |
做链接与参数配置(此步骤需要开发人员执行)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | # 链接ccache mkdir ~ /bin cd ~ /bin ln -s /usr/bin/ccache arm-linux-g++ ln -s /usr/bin/ccache arm-linux-gcc ln -s /usr/bin/ccache c++ ln -s /usr/bin/ccache cc ln -s /usr/bin/ccache ccache ln -s /usr/bin/ccache g++ ln -s /usr/bin/ccache gcc # ccache参数配置 echo ' export PATH= "$HOME/bin:$PATH" export USE_CCACHE=1 export CCACHE_COMPRESS=1 export CCACHE_DIR= "/aosp/pvt1/.nfsroot/.ccache" export CCACHE_EXEC= /usr/bin/ccache ' >>~/.bash_profile # 重新加载 source ~/.bash_profile |
1.3 测试ccache
编写一个简单的 C 程序:创建一个简单的 C 文件,例如 hello.c,将以下内容写入hell.c中
1 2 3 4 5 6 | #include <stdio.h> int main() { printf ( "Hello, World!\n" ); return 0; } |
1.4 首次编译:
1 2 3 4 | # 编译 gcc -c hello.c # 查看ccache状态, ccache -s |
1.5 再次编译,如果ccache hit
的数量增加了,表示 ccache
已成功缓存了编译结果并在重复编译时使用了缓存。
1 2 3 4 | # 编译 gcc -c hello.c # 查看ccache状态 ccache -s |
2. 在客户端(编译机)挂载 NFS 共享(管理员配置)
2.1 安装 NFS 客户端:
1 | sudo apt-get -y install nfs-common |
2.2 创建挂载点并挂载 NFS 共享:
1 2 | sudo mkdir -p /aosp/pvt1/ .nfsroot sudo mount 192.168.60.142: /aosp/pvt1/nfsdata /aosp/pvt1/ .nfsroot |
3 配置NFS开机自动挂载
3.1 在 /etc/systemd/system/mount-nfs.service中写入以下内容(如没有则新建此文件):
[Unit] Description=Mount NFS Share After=network-online.target Wants=network-online.target [Service] Type=oneshot ExecStart=/bin/bash -c "sleep 10 && /usr/bin/mount 192.168.60.142:/aosp/pvt1/nfsdata /aosp/pvt1/.nfsroot" RemainAfterExit=yes [Install] WantedBy=multi-user.target |
这里添加了一个 sleep 10 命令来确保挂载命令在网络完全启动后执行。
3.2 保存并退出文件,然后重新加载 systemd 配置:
1 | sudo systemctl daemon-reload |
3.3 确保服务已启用:
1 | sudo systemctl enable mount -nfs.service |
3.4 重启系统:
3.5 验证挂载
重启后再次检查挂载:
如下图则表示挂载成功:

3.6 查看日志
如果挂载仍然未成功,查看服务的状态和日志以获取更多信息:
1 2 | sudo systemctl status mount -nfs.service sudo journalctl -u mount -nfs.service |
三、使用ccache
在源代码一级目录下配置使用ccache共享缓存编译 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # 加载环境变量 source ~/.bash_profile #编译命令使用相同的相对路径 export CCACHE_BASEDIR=$( pwd ) export CCACHE_NOHASHDIR= true # 打开CCACHE开关,如不执行此条命令则代表不使用ccache sed -i -e '/ifneq\s\+(\$(CCACHE_EXEC),)/i +CCACHE_EXEC := /usr/bin/ccache' build /make/core/ccache .mk # 8676 android编译 time python vendor /mediatek/proprietary/scripts/releasetools/split_build_helper .py --run full_auto8676p1_64_bsp-userdebug 2>&1 | tee logs.txt # 编译时可使用以下命令查看ccache状态 ccache -s # 如需要配置ccache日志输出,则在编译前执行下面命令 export CCACHE_LOGFILE= /tmp/ccache .log |
参考文档:
Network File System (NFS) | Ubuntu
ccache/ccache: ccache – a fast compiler cache (github.com)
ccache --- ccache
Ccache — 文档 --- Ccache — Documentation