我正在尝试构建不生锈的"basic usage" sample project。
这是我的Cargo.toml。我必须在Cargo.toml中添加依赖项,以避免构建错误error[E0463]: can't find crate for 'hyper'
[package]
name = "rustlessTest"
version = "0.1.0"
authors = ["x"]
[dependencies.rustless]
git = "https://github.com/rustless/rustless"
[dependencies]
hyper = "0.9.14"
iron = "0.4.0"
rustc-serialize = "0.3.22"
valico = "1.0.1"
我还下载了OpenSSL库&源。我将它们存储在C:\OpenSSL\lib and C:\OpenSSL\include
下,并将目录设置为环境变量,如this thread中所述,关于如何在Windows上使用Hyper。
当我尝试编译时,它失败并显示以下输出:
Build failed, waiting for other jobs to finish...
error: failed to run custom build command for `openssl v0.7.14`
....
....
答案 0 :(得分:2)
我终于设法通过the solution from this blog post在Windows上构建OpenSSL。
以下是摘要:
设置以下环境变量
DEP_OPENSSL_INCLUDE=C:\OpenSSL-Win64\include
OPENSSL_INCLUDE_DIR=C:\OpenSSL-Win64\include
OPENSSL_LIB_DIR=C:\OpenSSL-Win64\lib\VC
OPENSSL_LIBS=ssleay32MT:libeay32MT
使用C ++支持安装Visual Studio 2015或Visual Studio代码。
确保正确设置所有路径变量
将rust-msvc
设置为工具链。您可以通过在控制台中键入rustup show
来检查此问题。你应该得到这样的输出:
Default host: x86_64-pc-windows-msvc
stable-x86_64-pc-windows-msvc (default)
rustc 1.13.0 (2c6933acc 2016-11-07)
现在您应该能够构建需要OpenSSL的Rust项目。
答案 1 :(得分:0)
你是对的,因为找不到OpenSSL。一个很好的教程在rust-openssl的自述文件中。
Windows MSVC
在MSVC上,遗憾的是并不总是一个微不足道的过程 OpenSSL的。也许现在最简单的方法就是下载 precompiled binaries并将其安装在您的系统上。目前它是 建议您安装1.1.0(非轻型)安装 选择这条路线。
安装预编译二进制文件后,您可以将此包装配置为 通过环境变量找到安装:
set OPENSSL_DIR=C:\OpenSSL-Win64
请注意,此OpenSSL发行版不附带任何root 证书。因此,要向互联网上的服务器发出请求,您必须这样做 手动安装它们。下载cacert.pem file from here, 将它复制到安全的地方(
C:\OpenSSL-Win64\certs
是一个好地方)和 将SSL_CERT_FILE
环境变量指向那里:set SSL_CERT_FILE=C:\OpenSSL-Win64\certs\cacert.pem
之后,你只是
cargo build
了!Windows GNU(MinGW)
使用MinGW时获取OpenSSL的最简单方法是 确保您正在使用MSYS2然后 执行:
# 32-bit pacman -S mingw-w64-i686-openssl # 64-bit pacman -S mingw-w64-x86_64-openssl
之后,
cargo build
应该就是您所需要的一切!手动配置
rust-openssl的构建脚本默认尝试定位OpenSSL 通过pkg-config或其他系统特定的机制。这不行 但在某些情况下,例如交叉编译或使用时 除正常系统安装之外的OpenSSL副本。
可以通过环境变量配置构建脚本:
OPENSSL_DIR
- 如果指定,将用于查找OpenSSL安装的目录。预计在这个目录下include
文件夹包含头文件,lib
文件夹包含运行时 库。OPENSSL_LIB_DIR
- 如果指定,将用于查找OpenSSL库的目录。覆盖隐含的lib
文件夹OPENSSL_DIR
(如果已指定)。OPENSSL_INCLUDE_DIR
- 如果指定,将用于查找OpenSSL头文件的目录。覆盖隐含的include
文件夹 按OPENSSL_DIR
(如果指定)。OPENSSL_STATIC
- 如果指定,OpenSSL库将静态而非动态链接。如果指定了
OPENSSL_DIR
,那么构建脚本将跳过 pkg-config步骤。
这是一场噩梦;使用Windows的OpenSSL真的很痛苦。我希望有一天Rust有自己的SSL / TLS实现。