提问人:Tristan 提问时间:10/29/2023 更新时间:10/29/2023 访问量:42
Rust 自定义panic_fmt导致发现重复的 lang 项 'panic_fmt' lang 项首先在 crate 'core' 中定义
Rust custom panic_fmt lead to found duplicate lang item `panic_fmt` the lang item is first defined in crate `core`
问:
在使用 Rust 的嵌入式项目中,当我尝试实现自己的恐慌处理程序时,我目前面临以下问题。
为了给你一些背景信息,我目前正在用 rust nightly 版本构建我的项目。 代码在这里:
#![no_std] //Disable standard lib
#![no_main]
#![feature(lang_items)]
#[lang = "panic_fmt"]
#[lang = "eh_personality"] extern fn eh_personality() {}
#[no_mangle]
pub extern fn panic_fmt(fmt: core::fmt::Arguments, file: &'static str, line: u32) -> ! {
println!("\n\nPANIC in {} at line {}:", file, line);
println!(" {}", fmt);
loop{}
}
这是我的部分 Cargo.toml :
[lib]
crate-type = ["staticlib"]
[dependencies]
multiboot2 = { version = "0.19", default-features = false }
rlibc = "1.0.0"
spin = "0.9.8"
volatile = "0.2.7"
x86_64 = "0.14.11"
[dependencies.lazy_static]
version = "1.4.0"
features = ["spin_no_std"]
和我的目标:
{
"llvm-target": "x86_64-unknown-none",
"data-layout": "e-m:e-i64:64-f80:128-n8:16:32:64-S128",
"arch": "x86_64",
"target-endian": "little",
"target-pointer-width": "64",
"target-c-int-width": "32",
"os": "none",
"executables": true,
"linker-flavor": "ld.lld",
"linker": "rust-lld",
"panic-strategy": "abort",
"disable-redzone": true,
"features": "-mmx,-sse,+soft-float"
}
编译时,出现以下错误:
panic_fmt导致找到重复的 lang 项,首先在 crate 中定义 lang 项panic_fmt
core
我不明白为什么
我试图从 Rust 官方存储库中查看一些问题,但没有什么与我的情况真正相似。
答: 暂无答案
评论
panic_fmt
panic_fmt
panic_fmt
#[no_core]
core