当我在windows 10 64位运行cargo install wasm-pack
时,我得到这个错误:
error: failed to run custom build command for `openssl-sys v0.9.65`
Caused by:
process didn't exit successfully: `C:UsersvilgoAppDataLocalTempcargo-install2J8ZNzreleasebuildopenssl-sys-932395a164949059build-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:Usersvilgo.cargoregistrysrcgithub.com-1ecc6299db9ec823openssl-src-111.15.0+1.1.1ksrclib.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:UsersvilgoAppDataLocalTempcargo-install2J8ZNz`
Caused by:
build failed
我该如何修复它?
问题
我认为你的问题发生是因为这三件事都发生了:
- 您可能是从msys shell开始构建wasm-pack的。
- wasm-pack依赖于Rust的OpenSSL绑定,默认情况下,它会尝试通过源代码构建OpenSSL。
- OpenSSL的构建脚本是用Perl编写的。msys Perl不使用
作为目录分隔符创建Windows路径,这会导致OpenSSL构建失败。
的解决方案以下三种解决方案应该能解决你的问题:
修复步骤#3:使用本地Windows Perl编译OpenSSL
确保您的默认Perl安装是"本地的";Windows Perl像草莓Perl。确保您的构建环境没有默认为msys perl。然后,从源代码重新编译wasm-pack和OpenSSL。
修复步骤#2:使用预编译的OpenSSL库
您可以从源代码构建wasm-pack,但指示Rust OpenSSL绑定查找预编译的OpenSSL。
如果你还没有,下载并安装vcpkg,我们将使用它来安装OpenSSL:
git clone https://github.com/Microsoft/vcpkg.git
.vcpkgbootstrap-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:pathtovcpkginstallation
set OPENSSL_NO_VENDOR=1
cargo install wasm-pack
修复步骤#1:在Windows上使用预编译的wasm-pack二进制文件。如果您不想编译wasm-pack或OpenSSL,您可以使用Windows安装程序(wasm-pack-init.exe))下载到rustwasm下载页面。或者,您也可以在Windows Subsystem for Linux (WSL)中运行您的wasm-pack构建。
确保安装了Open SSL的开发包。例如,Ubuntu上的libssl-dev
或Fedora上的openssl-devel
。如果已经安装了OpenSSL,而crate仍然无法找到它,那么可以设置OPENSSL_DIR
环境变量来指定OpenSSL安装的路径。如果你使用的是windows,你可以使用Win32/Win64 OpenSSL安装项目来提供在windows上安装OpenSSL的简单方法。