Windows下cargo安装wasm-pack报openssl-sys v0.9.74构建失败
问题根因
报错触发点为openssl-sys v0.9.74本地编译阶段失败:构建脚本尝试调用perl执行OpenSSL源码配置脚本时,触发program not found错误,本质是系统缺少OpenSSL源码编译所需的Perl环境,部分场景下还会伴随缺失C编译工具链的问题。
解决方案(按操作成本从低到高排序)
方案1:使用预编译二进制安装(推荐,完全绕开编译依赖坑)
不需要通过cargo源码编译,直接安装官方预编译的wasm-pack包即可:
- 获取Windows平台对应64位版本的wasm-pack安装程序
- 运行安装向导,安装过程中确认勾选「Add wasm-pack to system PATH」选项
- 安装完成后关闭当前所有终端窗口,重新打开终端执行
wasm-pack --version,正常输出版本号即安装成功
方案2:补全依赖后通过cargo安装
如果必须使用cargo install wasm-pack方式安装,按以下步骤补全编译依赖:
- 安装完整版Strawberry Perl for Windows,安装时勾选将Perl添加到系统PATH的选项,安装完成后新开终端执行
perl -v,能正常输出版本信息即安装到位 - 确认MSVC编译工具链已安装:打开Visual Studio Installer,勾选「使用C++的桌面开发」工作负载完成安装,确保系统自带nmake等Windows平台C编译工具,终端执行
where nmake能返回路径即配置正常 - (可选,进一步降低编译失败概率)提前安装vcpkg,通过vcpkg安装预编译的openssl包,添加系统环境变量
OPENSSL_NO_VENDOR=1,让openssl-sys直接调用系统已安装的OpenSSL库,跳过源码编译步骤 - 所有依赖配置完成后,新开终端执行
cargo install wasm-pack即可完成安装
方案3:跳过OpenSSL源码编译快速修复
如果不想安装Perl,可提前安装Windows平台预编译的OpenSSL包:
- 将OpenSSL的bin目录添加到系统PATH
- 新增系统环境变量
OPENSSL_DIR,值为OpenSSL的安装根目录 - 新增系统环境变量
OPENSSL_NO_VENDOR=1 - 配置完成后新开终端执行安装命令,openssl-sys会直接调用已安装的OpenSSL库,不再触发源码编译流程
排查步骤
- 终端执行
where perl,如果返回“找不到文件”,就是本次报错的直接原因,优先安装Perl并配置PATH - 如果Perl路径正常,执行
where nmake,如果找不到对应文件,说明MSVC编译工具链缺失,补装C++桌面开发组件即可 - 以上检查都通过仍报错的,先在终端执行
set RUST_BACKTRACE=1,再重新运行安装命令,根据完整回溯日志补全缺失依赖即可
内容的提问来源于stack exchange,提问作者TrinaE
相关产品推荐
相关产品推荐

