为什么生锈箱没有openssl-sys编译?

Ley*_*IAA 3 rust rust-cargo

我刚刚在Rust项目中添加了一个外部包:

[dependencies]
feed = "2.0"
Run Code Online (Sandbox Code Playgroud)

这个箱子有几个依赖关系,特别是openssl-sys v0.9.10.当我尝试构建我的项目时,这个失败了:

$ cargo build 
Compiling unicode-normalization v0.1.4
Compiling openssl-probe v0.1.0
Compiling matches v0.1.4
Compiling log v0.3.7
Compiling unicode-bidi v0.2.5
Compiling libc v0.2.21
Compiling quick-xml v0.4.2
Compiling pkg-config v0.3.9
Compiling rss v0.4.0
Compiling idna v0.1.1
Compiling time v0.1.36
Compiling num-traits v0.1.37
Compiling gcc v0.3.45
Compiling num-integer v0.1.34
Compiling url v1.4.0
Compiling num-iter v0.1.33
Compiling num v0.1.37
Compiling chrono v0.3.0
Compiling openssl-sys v0.9.10
Compiling libz-sys v1.0.13
error: failed to run custom build command for `openssl-sys v0.9.10`
process didn't exit successfully: 
`/home/E3news/flux/target/debug/build/openssl-sys-223aa532c32a251f/build-script-build` (exit code: 101)
--- stderr
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: "Failed to run `\"pkg-config\" \"--libs\" \"--cflags\" \"openssl\"`: No such file or directory (os error 2)"', /buildslave/rust-
buildbot/slave/stable-dist-rustc-linux/build/src/libcore/result.rs:868
note: Run with `RUST_BACKTRACE=1` for a backtrace.

Build failed, waiting for other jobs to finish...
error: build failed
Run Code Online (Sandbox Code Playgroud)

我在Debian 8.7上使用Rust 1.16.我libssl-dev在我的操作系统上安装了一个修复程序,但它没有解决问题.

任何的想法?

Ley*_*IAA 6

来自评论:

你有没有安装pkg-configopenssl


是的有效!openssl已安装但未安装pkg-config.所以:

$ apt install pkg-config
$ cargo clean 
$ cargo build
Run Code Online (Sandbox Code Playgroud)

解决了我的问题.谢谢@kennytm!

  • 就我而言,我已经安装了两者,但编译仍然失败。运行“cargo clean”解决了这个问题。 (3认同)