无法在Windows上构建Rustless

时间:2016-12-24 14:15:45

标签: windows openssl rust

我正在尝试构建不生锈的"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`
....
....

2 个答案:

答案 0 :(得分:2)

我终于设法通过the solution from this blog post在Windows上构建OpenSSL。

以下是摘要:

  1. here下载Win64 OpenSSL v1.0.1u。使用默认设置安装它。
  2. 设置以下环境变量

    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
    
  3. 使用C ++支持安装Visual Studio 2015或Visual Studio代码。

  4. 确保正确设置所有路径变量

  5. 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)
    
  6. 现在您应该能够构建需要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实现。