Compressing native executables using UPX
Ultimate Packer for eXecutables (UPX) 是一款压缩工具,可以减小可执行文件的体积。Quarkus 可以压缩生成的可执行应用程序,以减小其体积。当出现以下情况时,此类压缩非常有用:
-
使用 CLI 工具,并且想要减少磁盘占用
-
building small container images.
请注意,UPX 压缩:
-
会增加构建时间,尤其是当您使用高压缩级别时
-
会增加应用程序的启动 RSS 使用情况
Table of Contents
System vs. Container
UPX 压缩需要:
-
系统中提供
upx
命令PATH
; -
或使用容器内构建方式构建本机可执行文件。
如果您的路径中提供了 upx
命令,Quarkus 会使用它。否则,如果您使用容器内构建方式(使用 quarkus.native.container-build=true
)构建本机镜像,并且构建镜像提供了 upx
命令,Quarkus 会从容器内部压缩可执行文件。
如果您不属于上述情况之一,则压缩会失败。
Example 1. upx is cross-platform.
upx
能够使用与您的主机不同架构和操作系统的可执行文件进行压缩。例如,macOS 机器上的 upx
能够压缩 Linux 64 位可执行文件。
Configuring the UPX compression
然后,在应用程序配置中,配置所需的 compression level 启用压缩:
quarkus.native.compression.level=5
如果未设置压缩级别,则停用压缩。压缩将在构建本机可执行文件后发生,并且会替换可执行文件。
Extra parameters
您可以使用 --brute
或 --ultra-brute
通过 quarkus.native.compression.additional-args
参数向 upx 传递其他参数。该值是逗号分隔的参数列表:
quarkus.native.compression.level=3
quarkus.native.compression.additional-args=--ultra-brute,-v
详尽的参数列表可在 the UPX documentation 中找到。