5

我试图让一个基本的reqwesthttp请求像这样

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如果没有此知识,此 crate 将无法继续。如果安装了 OpenSSL 并且此 crate 无法找到它,您可以OPENSSL_DIR为编译过程设置环境变量。

确保您还安装了 openssl 的开发包。例如,libssl-dev在 Ubuntu 或openssl-develFedora 上。

...

好吧,这很容易解决。一个电话sudo apt install libssl-devsudo apt install pkg-config它的工作。但我仍然不明白这里到底出了什么问题。我认为cargo应该照顾依赖关系。为什么我现在要手动搜索它们apt

4

1 回答 1

3

reqwest 取决于rust-native-tls,这在 Linux 上取决于openssl-sys,这就是这条消息的来源cargo它的工作也是如此,处理 Rust 依赖项。

但是,openssl-sys取决于 C 库(OpenSSL),此时cargo停止关心。

于 2018-09-08T19:25:15.223 回答