7

当我cargo install wasm-pack在 Windows 10 64 位上运行时,出现此错误:

error: failed to run custom build command for `openssl-sys v0.9.65`

Caused by:
  process didn't exit successfully: `C:\Users\vilgo\AppData\Local\Temp\cargo-install2J8ZNz\release\build\openssl-sys-932395a164949059\build-script-main` (exit code: 101)
  --- stdout
  cargo:rustc-cfg=const_fn
  cargo:rerun-if-env-changed=X86_64_PC_WINDOWS_MSVC_OPENSSL_NO_VENDOR
  X86_64_PC_WINDOWS_MSVC_OPENSSL_NO_VENDOR unset
  cargo:rerun-if-env-changed=OPENSSL_NO_VENDOR
  OPENSSL_NO_VENDOR unset
  openssl-src: Enable the assembly language routines in building OpenSSL.
  running "perl" "./Configure" "--prefix=C:\\Users\\vilgo\\AppData\\Local\\Temp\\cargo-install2J8ZNz\\release\\build\\openssl-sys-a51d272dcebf1fc5\\out\\openssl-build\\install" "no-dso" "no-shared" "no-ssl3" "no-unit-test" "no-comp" "no-zlib" "no-zlib-dynamic" "no-md2" "no-rc5" "no-weak-ssl-ciphers" "no-camellia" "no-idea" "no-seed" "no-engine" "VC-WIN64A"

  --- stderr
  thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound, message: "Det går inte att hitta filen." }', C:\Users\vilgo\.cargo\registry\src\github.com-1ecc6299db9ec823\openssl-src-111.15.0+1.1.1k\src\lib.rs:469:39
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
warning: build failed, waiting for other jobs to finish...
error: failed to compile `wasm-pack v0.10.0`, intermediate artifacts can be found at `C:\Users\vilgo\AppData\Local\Temp\cargo-install2J8ZNz`

Caused by:
  build failed

我该如何解决?我在常规cmd中运行它。

4

2 回答 2

11

问题

我认为您的问题发生是因为所有这三件事都发生了:

  1. 您可能从 msys shell开始了 wasm-pack 构建。
  2. wasm-pack 依赖于 Rust 的 OpenSSL 绑定,默认情况下尝试通过源代码构建 OpenSSL。
  3. OpenSSL 的构建脚本是用 Perl 编写的。msys Perl 不会创建带有\目录分隔符的 Windows 路径,这会导致 OpenSSL 构建失败。

解决方案

这三种解决方案中的任何一种都可以解决您的问题:

修复步骤 #3:使用本机 Windows Perl 编译 OpenSSL

确保您的默认 Perl 安装是像Strawberry Perl 这样的“本机”Windows Perl。确保您的构建环境不默认为 msys perl。然后,重试从源代码编译 wasm-pack 和 OpenSSL。

修复步骤 #2:使用预编译的 OpenSSL 库

您可以从源代码构建 wasm-pack,但指示 Rust OpenSSL 绑定查找预编译的 OpenSSL。

如果您还没有,请下载并安装vcpkg,我们将使用它来安装 OpenSSL:

git clone https://github.com/Microsoft/vcpkg.git
.\vcpkg\bootstrap-vcpkg.bat

然后使用 vcpkg 安装 OpenSSL:

vcpkg install openssl:x64-windows-static-md

(如果这不起作用,请尝试vcpkg install openssl:x64-windows。)

然后尝试编译 wasm-pack。设置VCPKG_ROOT告诉 Rust OpenSSL 构建脚本在哪里查找,并设置OPENSSL_NO_VENDOR=1阻止构建脚本从源代码编译 OpenSSL。

set VCPKG_ROOT=c:\path\to\vcpkg\installation
set OPENSSL_NO_VENDOR=1
cargo install wasm-pack

修复步骤 #1:在 Windows 上使用预编译的 wasm-pack 二进制文件。

如果您不想编译 wasm-pack 或 OpenSSL,您可以使用rustwasm 下载页面上的 Windows 安装程序 ( wasm-pack-init.exe ) 。或者,您也可以在Windows Subsystem for Linux (WSL)中运行您的 wasm-pack 构建。

于 2021-08-13T08:35:02.103 回答
1

确保您已安装 Open SSL 的开发包。例如,libssl-dev在 Ubuntu 或openssl-develFedora 上。如果 OpenSSL 已经安装并且 crate 仍然无法找到它,您可以设置OPENSSL_DIR环境变量来指定 Open SSL 安装的路径。如果您使用的是 windows,您可以使用Win32/Win64 OpenSSL 安装项目在 windows 上提供 OpenSSL 的简单安装。

于 2021-08-04T07:28:19.823 回答