对于单个crate项目,将这些行添加到Cargo.toml
按预期工作。
[profile.release]
panic = "abort"
然后构建项目:
cargo build --release
但是,在间接使用依赖项的项目中,我收到错误。
Compiling c_vec v1.0.12
error: the linked panic runtime `panic_unwind` is not compiled with this crate's panic strategy `abort`
error: aborting due to previous error
Build failed, waiting for other jobs to finish...
error: Could not compile `c_vec`.
c_vec
crate是间接使用的依赖项。
如何在没有冲突的多箱项目中使用panic=abort
?
详情请注意:
答案 0 :(得分:3)
看起来是因为c_vec
指定dylib
作为其库类型之一。
我在Github上提交了这个问题:https://github.com/rust-lang/cargo/issues/2738
得到了其中一位开发人员的回答:
不幸的是,这是一个错误的错误信息,但它是 因为c_vec包中的crate-type = [“dylib”,“rlib”]。这个 导致货物通过-C prefer-dynamic链接到dylib 我们发货是针对panic_unwind编译的,意思是中止模式 确实无效(此错误来自编译器)。此处的修复方法是从c_vec包中删除“dylib”。
当然,你必须自己分叉lodepng
和c_vec
才能解决这个问题。