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

Windows环境执行cargo run时openssl-sys编译报权限拒绝错误

报错核心定位

从编译日志可判定,openssl-sys依赖未对接系统已通过vcpkg安装的OpenSSL库,因未检测到OPENSSL_NO_VENDOR环境变量,自动触发内置OpenSSL源码编译流程,编译过程因系统权限不足无法执行外部构建指令,最终抛出"Access is denied"的权限错误。

分步处理方案

  • 强制关闭openssl-sys的内置源码编译逻辑
    1. 先通过vcpkg安装匹配x86_64 MSVC架构的静态OpenSSL库,在vcpkg根目录执行命令:vcpkg install openssl:x64-windows-static
    2. 配置openssl-sys的识别路径,依次设置以下系统环境变量,确保依赖能直接定位到已安装的库,不再触发自行编译逻辑:
      • OPENSSL_DIR:指向vcpkg安装OpenSSL的根目录,一般为vcpkg安装路径下的installed\x64-windows-static文件夹
      • OPENSSL_NO_VENDOR = 1:完全禁用内置源码编译模式
      • 如出现路径识别异常,可补设OPENSSL_INCLUDE_DIR指向上述路径下的include目录,OPENSSL_LIB_DIR指向上述路径下的lib目录
  • 清理旧的异常构建缓存
    之前触发的内置编译流程已生成带权限限制的临时文件,在项目根目录执行cargo clean清空项目编译缓存,同时删除Cargo本地缓存中残留的openssl相关构建产物(路径为用户目录下.cargo\registry\src\中对应版本的openssl-src、openssl-sys文件夹),避免旧文件的权限问题影响重新编译。
  • 低维护成本替代方案
    如对接原生OpenSSL始终出现路径或权限问题,可直接调整项目依赖的TLS实现,完全绕开openssl-sys的编译流程:修改项目Cargo.toml,将Rocket框架默认的OpenSSL依赖替换为Rustls纯Rust实现的TLS栈,从根源上避免Windows平台的OpenSSL编译兼容问题。

操作完成后重新执行cargo run即可正常完成编译。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 21:06:04