1.2. 生成原生可执行文件


原生二进制文件是创建在特定操作系统和 CPU 架构中运行的可执行文件。

以下列表概述了原生可执行文件的一些示例:

  • Linux AMD 64 位的 ELF 二进制文件
  • Windows AMD 64 位的 EXE 二进制文件
  • ARM 64 位的 ELF 二进制文件
注意

红帽构建的 Quarkus 中只支持 Linux x86-64 或 AArch64 位的 ELF 二进制文件。

构建原生可执行文件的一个优点是您的应用程序和依赖项(包括 Java 虚拟机(JVM))被打包到单个文件中。应用程序的原生可执行文件包含以下项目:

  • 编译的应用程序代码
  • 所需的 Java 库
  • 用于改进应用程序启动时间和最小磁盘和内存占用量的虚拟机版本(VM)减少,它也是为应用程序代码及其依赖项量身定制的。

要从 Quarkus 应用程序生成原生可执行文件,您可以选择 in-container 构建或 local-host 构建。下表解释了您可以使用的不同构建选项:

Expand
表 1.1. 构建生成原生可执行文件的选项
构建选项Requires使用结果优点

in-container build - Supported

容器运行时,如 Podman 或 Docker

默认 registry.access.redhat.com/quarkus/mandrel-for-jdk-21-rhel8:23.1 构建器镜像

使用主机的 CPU 构架的 Linux 64 位可执行文件

GraalVM 不需要在本地设置,这使得 CI 管道 可以更有效地运行

local-host build - 仅支持上游

本地安装 GraalVM 或 Mandrel

其本地安装作为 quarkus.native.builder-image 属性的默认安装

具有与执行构建的机器相同的操作系统和 CPU 架构的可执行文件

不允许或不希望使用 Docker 或 Podman 等工具的开发人员。总体而言,它比容器内构建方法要快。

重要

1.2.1. 使用容器内构建生成原生可执行文件

要创建原生可执行文件并运行原生镜像测试,请使用由红帽构建的 Quarkus 为容器内构建提供 的原生 配置集。

先决条件

  • podman 或 Docker 已安装。
  • 容器有权访问至少 8GB 内存。
  • 可选: 已安装 Quarkus CLI,这是可用于构建原生可执行文件的方法之一。如需更多信息 ,请参阅安装 Quarkus CLI
注意

Quarkus CLI 主要用于开发目的,包括创建、更新和构建 Quarkus 项目等任务。但是,红帽不支持在生产环境中使用 Quarkus CLI。

流程

  1. 打开 Getting Started 项目 pom.xml 文件,并验证项目是否包含 原生 配置集:

    <profiles>
      <profile>
        <id>native</id>
        <activation>
          <property>
            <name>native</name>
          </property>
        </activation>
        <properties>
          <skipITs>false</skipITs>
          <quarkus.native.enabled>true</quarkus.native.enabled>
        </properties>
      </profile>
    </profiles>

     

  2. 使用以下方法之一构建原生可执行文件:

    • 使用 Maven:

      • 对于 Docker:

        ./mvnw package -Dnative -Dquarkus.native.container-build=true

         

      • 对于 Podman:

        ./mvnw package -Dnative -Dquarkus.native.container-build=true -Dquarkus.native.container-runtime=podman

         

    • 使用 Quarkus CLI:

      • 对于 Docker:

        quarkus build --native -Dquarkus.native.container-build=true

         

      • 对于 Podman:

        quarkus build --native -Dquarkus.native.container-build=true -Dquarkus.native.container-runtime=podman

         

        步骤结果

        这些命令在目标目录中创建一个 *-runner 二进制文件,在其中应用以下内容:

      • *-runner 文件是 Quarkus 生成的构建原生二进制文件。
      • 目标目录 是构建 Maven 应用程序时 Maven 创建的目录。

        重要

        将 Quarkus 应用程序编译到原生可执行文件,在分析和优化过程中消耗大量内存。您可以通过设置 quarkus.native.native-image-xmx 配置属性来限制原生编译过程中使用的内存量。设置较低的内存限值可能会增加构建时间。

  3. 要运行原生可执行文件,请输入以下命令:

    ./target/*-runner

     

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部