You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust项目构建musl目标时musl-gcc缺失问题求助

解决Rust构建musl目标时musl-gcc缺失导致OpenSSL编译失败的问题

问题描述

在Rust项目的Cargo.toml中添加依赖openssl = { version = "0.10.35", features = ["vendored"] }后,使用rust:1.54-bullseye镜像构建x86_64-unknown-linux-musl目标时,GitHub Actions的Docker构建流程报错/bin/sh: 1: musl-gcc: not found,导致OpenSSL编译失败,构建进程退出码为101。

相关配置:

Dockerfile

FROM rust:1.54-bullseye as builder
WORKDIR /app
COPY . /app
RUN rustup default stable
RUN rustup target add x86_64-unknown-linux-musl
RUN RUSTFLAGS='-C link-arg=-s' cargo build --release --target x86_64-unknown-linux-musl

Cargo.toml

[package]
name = "alt-server"
version = "0.1.0"
edition = "2021"

[dependencies]
actix-web = "4"
tokio = { version = "1.17.0", features = ["full"] }
diesel = { version = "2.0.4", features = ["postgres","64-column-tables","chrono","serde_json"] }
reqwest = { version = "0.11.18", features = ["json"] }
serde = { version = "1.0.64", features = ["derive"] }
serde_json = "1.0.64"
openssl = { version = "0.10.35", features = ["vendored"] }

解决方案

修改Dockerfile,补充musl工具链安装与链接器配置

FROM rust:1.54-bullseye as builder
WORKDIR /app
# 安装musl工具链,提供musl-gcc
RUN apt-get update && apt-get install -y --no-install-recommends musl-tools
COPY . /app
RUN rustup default stable
RUN rustup target add x86_64-unknown-linux-musl
# 指定musl目标的链接器为musl-gcc
ENV CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_LINKER=musl-gcc
RUN RUSTFLAGS='-C link-arg=-s' cargo build --release --target x86_64-unknown-linux-musl

方案说明

  • musl-tools包包含了musl-gcc,解决构建时工具缺失的问题;
  • 通过环境变量CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_LINKER明确指定musl目标的链接器,确保OpenSSL在编译时使用正确的工具链;
  • 保留原有的RUSTFLAGS参数,用于减小最终二进制文件体积。

内容的提问来源于stack exchange,提问作者Dolphin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 14:42:46