对于单个crate项目,将这些行添加到Cargo.toml预期的工作.
[profile.release]
panic = "abort"
Run Code Online (Sandbox Code Playgroud)
然后构建项目:
cargo build --release
Run Code Online (Sandbox Code Playgroud)
但是,在间接使用依赖项的项目中,我收到错误.
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`.
Run Code Online (Sandbox Code Playgroud)
所述c_vec箱是一个间接使用依赖性.
如何panic=abort在没有冲突的多箱项目中使用?
详情请注意:
看起来是因为c_vec指定dylib为其库类型之一。
我在 Github 上将此作为问题提交:https : //github.com/rust-lang/cargo/issues/2738
并从其中一位开发人员那里得到了答案:
啊不幸的是,这是一个糟糕的错误消息,但这是因为 c_vec 板条箱中的 crate-type = ["dylib", "rlib"] 。这会导致 Cargo 传递 -C prefer-dynamic,它链接到我们发布的针对 panic_unwind 编译的 dylib,这意味着中止模式确实无效(这个错误来自编译器)。
此处的解决方法是从 c_vec 板条箱中删除“dylib”。
当然,你必须自己分叉lodepng并c_vec处理这个问题。
| 归档时间: |
|
| 查看次数: |
969 次 |
| 最近记录: |