Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust生成对_truncfsf2的调用,它声称不支持该调用?_Rust_Arduino_Embedded_Llvm - Fatal编程技术网

Rust生成对_truncfsf2的调用,它声称不支持该调用?

Rust生成对_truncfsf2的调用,它声称不支持该调用?,rust,arduino,embedded,llvm,Rust,Arduino,Embedded,Llvm,我正在为一台Atmega328写一些防锈代码。我知道它没有内置对浮点的支持,所以我需要提供一些我想要使用的浮点例程的软实现,比如在中找到的那些。但是,即使包含了编译器内置项,我也会得到以下结果: quaternion.rs:54: undefined reference to `__truncdfsf2' 查看编译器内置的页面,我发现没有计划支持\uuuu truncfsf2,因为它“显然涉及到Rust不支持的浮点类型(“f128”、“f80”和复数)。” 有人能帮我理解为什么Rust/LLV

我正在为一台Atmega328写一些防锈代码。我知道它没有内置对浮点的支持,所以我需要提供一些我想要使用的浮点例程的软实现,比如在中找到的那些。但是,即使包含了编译器内置项,我也会得到以下结果:

quaternion.rs:54: undefined reference to `__truncdfsf2'
查看编译器内置的页面,我发现没有计划支持
\uuuu truncfsf2
,因为它“显然涉及到Rust不支持的浮点类型(“f128”、“f80”和复数)。”

有人能帮我理解为什么Rust/LLVM似乎在生成Rust显然不支持的调用吗?有办法解决这个问题吗

这是我的target.json供参考

{
    "arch": "avr",
    "atomic-cas": false,
    "cpu": "atmega328",
    "data-layout": "e-P1-p:16:8-i8:8-i16:8-i32:8-i64:8-f32:8-f64:8-n8-a:8",
    "eh-frame-header": false,
    "exe-suffix": ".elf",
    "executables": true,
    "late-link-args": {
        "gcc": [
            "-lgcc"
        ]
    },
    "linker": "avr-gcc",
    "linker-is-gnu": true,
    "llvm-target": "avr-unknown-unknown",
    "max-atomic-width": 8,
    "no-default-libraries": false,
    "no-compiler-rt": true,
    "target-c-int-width": "16",
    "target-pointer-width": "16",
    "pre-link-args": {
    "gcc": [
      "-mmcu=atmega328",
      "-Wl,--as-needed"
    ]
  },
  "vendor": "unknown",
  "os": "none",
  "target-endian": "little"
}

我对生锈知之甚少,但在我看来,你们正试图用只支持AVR芯片上ARM内核的工具链来做些什么。Atmega328(和AVR芯片)不使用gcc,而是使用AVR gcc。对于AVR,有一个支持AVR芯片上的锈迹叉。顺便说一句,AVR芯片(包括Arduino)通过添加构建标志
-Wl,-u,vfprintf-lprintf\u flt-lm
来支持浮点。有关更多详细信息,请参阅文档。它在Arduino上额外占用1kB的闪存。