{"record":{"id":"5b2d88155684727a","repo":"quarkusio/quarkus","slug":"the-native-binary-produced-by-the-build-is-not-a-l","errorCode":null,"errorMessage":"The native binary produced by the build is not a Linux binary and therefore cannot be used in a Linux container image. Consider adding \"quarkus.native.container-build=true\" to your configuration","messagePattern":"The native binary produced by the build is not a Linux binary and therefore cannot be used in a Linux container image\\. Consider adding \"quarkus\\.native\\.container-build=true\" to your configuration","errorType":"error_code","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"extensions/container-image/container-image-buildpack/deployment/src/main/java/io/quarkus/container/image/buildpack/deployment/BuildpackProcessor.java","lineNumber":129,"sourceCode":"            Optional<ContainerImageBuildRequestBuildItem> buildRequest,\n            Optional<ContainerImagePushRequestBuildItem> pushRequest,\n            List<ContainerImageLabelBuildItem> containerImageLabels,\n            BuildProducer<ArtifactResultBuildItem> artifactResultProducer,\n            BuildProducer<ContainerImageBuilderBuildItem> containerImageBuilder) {\n\n        boolean buildContainerImage = buildContainerImageNeeded(containerImageConfig, buildRequest);\n        boolean pushContainerImage = pushContainerImageNeeded(containerImageConfig, pushRequest);\n\n        if (!buildContainerImage && !pushContainerImage) {\n            return;\n        }\n\n        if (containerImageConfig.isBuildExplicitlyDisabled()) {\n            return;\n        }\n\n        if (!NativeBinaryUtil.nativeIsLinuxBinary(nativeImage)) {\n            throw new RuntimeException(\n                    \"The native binary produced by the build is not a Linux binary and therefore cannot be used in a Linux container image. Consider adding \\\"quarkus.native.container-build=true\\\" to your configuration\");\n        }\n\n        log.info(\"Starting (local) container image build for native binary using buildpack.\");\n        String targetImageName = runBuildpackBuild(buildpackConfig, containerImage, containerImageConfig, buildContainerImage,\n                pushContainerImage,\n                outputTarget, true /* isNative */);\n\n        artifactResultProducer.produce(new ArtifactResultBuildItem(null, \"native-container\",\n                Collections.singletonMap(\"container-image\", targetImageName)));\n        containerImageBuilder.produce(new ContainerImageBuilderBuildItem(BUILDPACK));\n    }\n\n    private Map<ProjectDirs, Path> getPaths(OutputTargetBuildItem outputTarget) {\n\n        Path targetDirectory = outputTarget.getOutputDirectory();\n\n        Map.Entry<Path, Path> mainSourcesRoot = findMainSourcesRoot(targetDirectory);","sourceCodeStart":111,"sourceCodeEnd":147,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/container-image/container-image-buildpack/deployment/src/main/java/io/quarkus/container/image/buildpack/deployment/BuildpackProcessor.java#L111-L147","documentation":"BuildpackProcessor.buildFromNative refuses to build a container image when the native binary produced by the Quarkus build is not a Linux binary, because it cannot be used in a Linux container image. This typically occurs when building a native executable for the local host OS (e.g. macOS/Windows) instead of a Linux target.","triggerScenarios":"Running a buildpack container-image build over a native binary built without quarkus.native.container-build=true (or without a Linux-musl target), so nativeImage targets the local OS.","commonSituations":"Developers on macOS/Windows building natively with a local GraalVM then attempting docker/buildpack image creation; CI without the container-build flag.","solutions":["Set quarkus.native.container-build=true so the native image is built inside a Linux container","Or build with -Dquarkus.native.container-build=true on the command line","Or produce a Linux binary explicitly (e.g. target linux/musl) before the image build"],"exampleFix":"// before\n./mvnw package -Pnative -Dquarkus.container-image.build=true\n// after\n./mvnw package -Pnative -Dquarkus.container-image.build=true -Dquarkus.native.container-build=true","handlingStrategy":"validation","validationCode":"// build a Linux native binary before the container build\n./mvnw package -Pnative -Dquarkus.native.container-build=true\n// verify before image build:\nif (!quarkus.native.containerBuild && !hostOsIsLinux()) {\n    throw new IllegalStateException(\"enable quarkus.native.container-build=true\");\n}","typeGuard":null,"tryCatchPattern":"try {\n    quarkusBuild();\n} catch (RuntimeException e) {\n    if (e.getMessage().contains(\"not a Linux binary\")) {\n        // rerun with -Dquarkus.native.container-build=true\n    } else { throw e; }\n}","preventionTips":["Always pass -Dquarkus.native.container-build=true on non-Linux hosts when building native container images","Keep container-build flag in CI pipelines and Maven/Gradle profiles"],"tags":["native-image","container-image","buildpack","linux"],"backgroundTag":"native-binary-not-linux","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}