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

使用cargo lambda构建Rust Lambda时找不到OpenSSL开发头文件

解决cargo-lambda构建含reqwest的Rust Lambda时OpenSSL头文件找不到的问题

方案一:改用reqwest的rustls后端(推荐)

reqwest默认依赖系统OpenSSL,换成rustls后端可以完全绕开系统OpenSSL的交叉编译问题,操作步骤如下:

  • 修改Cargo.toml中的reqwest依赖,指定启用rustls特性:
    reqwest = { version = "0.11", features = ["rustls-tls", "json"] }
    
  • 重新执行构建命令:
    cargo lambda build --release --arm64
    

方案二:交叉编译arm64版本的OpenSSL

如果必须依赖系统OpenSSL,需要为arm64目标架构编译对应的库文件:

  1. 安装arm64交叉编译工具链:
    pacman -S aarch64-linux-gnu-gcc aarch64-linux-gnu-binutils
    
  2. 下载与openssl-sys-0.9.87兼容的OpenSSL源码(推荐1.1.1系列),解压后进入源码目录,执行交叉编译配置:
    ./Configure linux-aarch64 --prefix=/usr/aarch64-linux-gnu shared
    make
    sudo make install
    
  3. 构建时指定交叉编译相关环境变量,确保cargo lambda能找到arm64版本的OpenSSL:
    CC_aarch64_unknown_linux_gnu=aarch64-linux-gnu-gcc \
    OPENSSL_LIB_DIR=/usr/aarch64-linux-gnu/lib \
    OPENSSL_INCLUDE_DIR=/usr/aarch64-linux-gnu/include \
    OPENSSL_DIR=/usr/aarch64-linux-gnu \
    cargo lambda build --release --arm64
    

额外排查点

  • 确认openssl-sys版本与系统安装的OpenSSL版本兼容:openssl-sys-0.9.87对应OpenSSL 1.1.x系列,若系统装的是3.x版本会出现兼容性问题,可在Cargo.toml中强制指定openssl-sys版本,或降级系统OpenSSL到1.1.x。
  • 检查环境变量是否在cargo lambda执行的上下文里生效:确保变量设置后在同一终端执行构建命令,避免环境变量传递失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 22:32:42