makepkg-optimize
makepkg-optimizeAUR 是一个为 pacman 提供多种优化宏的补充脚本集合,包括 tidy、buildenv 和 executable,用于 `build()` 和 `package()` 阶段。
安装
安装 makepkg-optimizeAUR,并为了使需要它们的功能可用,安装后端:openmp、upx、optipng、svgo 和 polly。
配置
makepkg-optimizeAUR 会根据您当前的 makepkg.conf(5) 配置生成一个冗余的配置文件 ` /etc/makepkg-optimize.conf`。
此文件列出了补充的 编译标志、构建环境选项、全局包选项、包输出选项和 压缩默认值,所有这些默认情况下都处于禁用状态。
构建优化包
$ makepkg -c --config /etc/makepkg-optimize.conf
在干净 chroot 中构建优化包
或者,`makepkg-optimize` 也可以在 chroot 中用于构建优化包。
Chroot 设置
在 设置 chroot 后,还需要一些额外的步骤。
安装 makepkg-optimize 和后端
首先,在基础 chroot 中安装一些优化宏的后端。
$ arch-nspawn "$CHROOT"/root pacman -S openmp upx optipng polly
然后 下载并 构建 makepkg-optimizeAUR 和 svgo。
为了将它们安装到基础 chroot 中,将它们的包文件复制到其中并进行安装,例如:
# cp svgo-1.2.2-2-any.pkg.tar.xz "$CHROOT"/root/root/ $ arch-nspawn "$CHROOT"/root pacman -U /root/svgo-1.2.2-2-any.pkg.tar.xz
使用 chroot
构建包
首先,编辑 `$CHROOT/root/etc/makepkg-optimize.conf` 并 选择您首选的优化项。
构建时,将配置文件传递给 `makepkg`。
$ makechrootpkg -c -r "$CHROOT" -- -c --config /etc/makepkg-optimize.conf
使用 PGO 构建
`BUILDENV` 的 `pgo` 选项根据是否是第一次或第二次启用此标志构建包,来启用配置文件的 *生成* 或 *应用*。干净 chroot 构建会使此过程复杂化,因为软件将在 chroot 外部运行以生成配置文件,但这些配置文件需要在重新编译时从 chroot 内部应用。解决方案是通过绑定挂载文件夹来桥接这三个文件系统。
创建 PGO 缓存
创建并绑定一个文件夹来存储 配置文件。
# mkdir -m 777 {"$CHROOT"/{root,"$USER"},}/mnt/pgo
# mount -o bind {,"$CHROOT"/root}/mnt/pgo
# mount -o bind "$CHROOT"/{root,"$USER"}/mnt/pgo
#PGODEST /full/path/to/$CHROOT/$USER/mnt/pgo/ /mnt/pgo/ none bind,x-gvfs-hide 0 0 /mnt/pgo/ /full/path/to/$CHROOT/root/mnt/pgo/ none bind,x-gvfs-hide 0 0
编辑 `$CHROOT/root/etc/makepkg-optimize.conf` 并设置 `PROFDEST=/mnt/pgo`。
分析程序
构建,然后 安装该包并测试运行其可执行文件。
在充分使用软件后,关闭它,然后重新构建并重新安装其包。