编辑此页面

使用 UPX 压缩原生可执行文件

Ultimate Packer for eXecutables (UPX) 是一种压缩工具,可以减小可执行文件的大小。Quarkus 可以压缩生成的原生可执行文件,以减小其大小。在以下情况下,这种压缩非常有用:

  • 构建 CLI 工具,并且您想要减小磁盘占用空间,

  • 构建小型容器镜像。

请注意,UPX 压缩

  1. 会增加您的构建时间,尤其是在您使用高压缩级别时

  2. 会增加应用程序的启动 RSS 使用量

系统与容器

UPX 压缩需要

  • 系统 PATH 中提供 upx 命令;

  • 或者使用容器内构建来构建原生可执行文件。

如果您的路径中提供了 upx 命令,Quarkus 将使用它。否则,如果您使用容器内构建(使用 quarkus.native.container-build=true)构建了原生镜像,并且构建器镜像提供了 upx 命令,Quarkus 将从容器内部压缩可执行文件。

如果您不属于这些情况之一,则压缩将失败。

upx 是跨平台的。

upx 可以压缩使用与您的主机不同的架构和操作系统的可执行文件。例如,macOS 机器上的 upx 可以压缩 Linux 64 位可执行文件。

配置 UPX 压缩

然后,在您的应用程序配置中,通过配置您想要的压缩级别来启用压缩

quarkus.native.compression.level=5

如果未设置压缩级别,则禁用压缩。压缩将在构建原生可执行文件后进行,并将替换该可执行文件。

压缩级别

压缩级别从 1 到 10

  • 1:更快的压缩

  • 9:更好的压缩

  • 10:最佳压缩(对于大文件来说可能很慢)

额外参数

您可以使用 quarkus.native.compression.additional-args 参数将额外的参数传递给 upx,例如 --brute--ultra-brute。该值是以逗号分隔的参数列表

quarkus.native.compression.level=3
quarkus.native.compression.additional-args=--ultra-brute,-v

可以在 UPX 文档中找到完整的参数列表。

相关内容