linux

makepkg 速度优化 - speed up makepkg of arch linux

前不久在安装一个软件的时候发现需要 protobuf 3.6.1 而 Manjaro Linux 自带的是 3.6.0.1 但是找到了 PKGBUILD 文件,于是准备用 makepkg 命令编译并用 pacman -U 进行安装,结果却陷入了一场编译速度优化大战。

提起 Arch Linux,我们很容易想到 AUR (Archlinux User-community Repository)和 PKGBUILD,我们可以自己编写 PKGBUILD 文件,然后上传到 AUR,最后通过 pacman 来安装,如果无法通过 pacman 来安装,也可以自己 build,即 makepkg 命令,但是就像我先前的遭遇一样,Manjaro Linux 的 makepkg 配置文件默认是单线程,这会很慢,很慢!下面是我在 编译 protobuf 3.6.1 时用到的优化策略:

makepkg - 并行编译

编辑 /etc/makepkg.conf 查找 MAKEFLAGS 行,改为 MAKEFLAGS="-j8" ,这样子编译的时候将使用 8 个核,速度更快。我的测试中,从30分钟降到6分钟,5倍的性能提升吧。

使用内存文件系统进行编译

编辑 /etc/makepkg.conf 找到 BUILDDIR 改为 /tmp/makepkg ,如果找不到就新增,我是新增。亲测影响不大,可能是因为我的测试本身就在  /tmp 目录下进行,且还是固态硬盘的缘故吧。

使用 ccache

先安装ccache,然后编辑 /etc/makepkg.conf ,找到 BUILDENV ,将其值中 ccache 前面的感叹号去掉即可,我改后为:BUILDENV=(!distcc color ccache check !sign)

如果你只需要加速 编译,那么,第一步即可,当然,你也可以使用第二三步,实测影响微乎其微,甚至因为 ccache 的目录是在用户目录下,由于读写磁盘反而导致编译速度减慢,我的测试中使用ccache 反而多了 10秒,当然,只测了一次,存在一定的误差是可能的。

ccache 配置

ccache 默认的配置文件为 /etc/ccache.conf 以及 ~/.ccache/ccache.conf

如果您内存足够大的话,修改默认的缓存路劲:cache_dir = /tmp/ccache

禁用 export CCACHE_DISABLE=1

清理 ccache -C

另外,默认是占用 5G ,你也可以修改为 2G   ccache --set-config=max_size=2.0G

full-stack-trip

Share
Published by
full-stack-trip
Tags: manjaro

Recent Posts

Android 自定义 View 入门

说来惭愧,工作数年,连基本的自…

4 年 ago

retrofit 同时支持 xml 和 json

retrofit 解析 jso…

4 年 ago

mysql - 存储过程 从入门到放弃

最近有个报表的需求,于是乎用了…

4 年 ago

奶嘴战略 - 你不得不知道的扎心真相(一)

一句:英雄枯骨无人问,戏子家事…

4 年 ago

acme.sh 的简单使用

acme.sh 是纯 shel…

4 年 ago

wrk -更现代化的http压测工具

wrk 是一款更现代化的 ht…

4 年 ago