为什么reqwest需要安装OpenSSL?

时间:2018-09-08 18:51:51

标签: ssl openssl rust reqwest

我试图让基本的reqwest http请求像这样

extern crate reqwest;
extern crate url;

use url::Url;

fn main() {
    let resp = reqwest::get("http://google.com".parse::<Url>().unwrap());
    println!("{:?}", resp.unwrap())
}

但是,这会产生错误

  

找不到OpenSSL安装目录,并且此-sys条板箱无法找到   没有这些知识就继续进行。如果已安装OpenSSL且此板条箱具有   找不到它,您可以为OPENSSL_DIR环境变量设置   编译过程。

     

确保您还安装了openssl开发包。   例如,在Ubuntu上为libssl-dev,在Fedora上为openssl-devel

     

...

嗯,这很容易修复。一次呼叫sudo apt install libssl-devsudo apt install pkg-config,它正在工作。但是我仍然不明白这里到底出了什么问题。我以为cargo应该照顾依赖性。为什么现在我用apt手动搜寻它们?

1 个答案:

答案 0 :(得分:2)

reqwest depends on rust-native-tls,其中on Linux depends on openssl-sys,即where this message comes from。 因此cargo做到了自己的工作,照顾了Rust的依赖性。

但是,openssl-sys依赖于C库(OpenSSL),此时cargo会停止运行。