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

GitHub Action编译依赖OpenSSL的Rust项目失败求助

解决方案

问题核心

你遇到两个关键问题:

  • macOS SDK版本不兼容:GitHub Actions的macos-latest镜像未预装macosx11.1 SDK,导致xcrun命令报错
  • 交叉编译OpenSSL失败:从x86_64交叉编译到aarch64时,系统OpenSSL无法适配目标架构,需启用vendored模式让openssl-sys自行编译适配版本

具体修改步骤

1. 更新编译脚本(ci/build-macos.sh)

修改SDK获取逻辑,并添加OPENSSL_VENDOR=1启用内置OpenSSL:

#!/bin/bash

set -e

echo "Building Test CLI"

# 使用镜像默认的可用SDK,避免指定过时版本
SDKROOT=$(xcrun --show-sdk-path) MACOSX_DEPLOYMENT_TARGET=11.0 OPENSSL_VENDOR=1 cargo build --release --target=aarch64-apple-darwin

echo "Packaging Binaries"

cd target/aarch64-apple-darwin/release
tar -zcvf "$1.tar.gz" test-cli

2. (可选)通过Cargo配置强制启用vendored模式

如果环境变量方式不生效,可在项目根目录创建.cargo/config.toml文件,添加以下内容:

[target.aarch64-apple-darwin]
rustflags = ["--cfg", "openssl_vendored"]

3. 确认GitHub Action配置

当前Action配置无需额外修改,只需确保编译脚本的修改已提交到代码仓库即可。

修改说明

  • xcrun --show-sdk-path会自动获取镜像中可用的最新SDK路径,彻底解决指定过时SDK导致的找不到问题
  • OPENSSL_VENDOR=1会让openssl-sys放弃查找系统OpenSSL,转而从源码编译适配aarch64架构的版本,完美解决交叉编译依赖问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 08:42:02