我正试着交叉编译一个Arduino Uno。我已经到了以下错误的地步:
$ ~/.cargo/bin/cargo build
Compiling bacon v0.1.0 (/home/thoth/src/rust-arduino-blink-3/bacon)
warning: cc1plus: warning: '-fPIC' is not supported [-fPIC]
Compiling rust-arduino-blink-3 v0.1.0 (/home/thoth/src/rust-arduino-blink-3)
error: linking with `avr-gcc` failed: exit code: 1
|
= note: "avr-gcc" "-mmcu=atmega328p" "-Wl,--as-needed" "-L" "/home/thoth/.rustup/toolchains/nightly-2021-01-07-x86_64-unknown-linux-gnu/lib/rustlib/avr-atmega328p/lib" "/home/thoth/src/rust-arduino-blink-3/target/avr-atmega328p/debug/deps/rust_arduino_blink_3-09a480000c7899fd.panic_halt-0678487765a992dd.panic_halt.ei8zczol-cgu.0.rcgu.o.rcgu.o" "-o" "/home/thoth/src/rust-arduino-blink-3/target/avr-atmega328p/debug/deps/rust_arduino_blink_3-09a480000c7899fd.elf" "-Wl,--gc-sections" "-no-pie" "-L" "/home/thoth/src/rust-arduino-blink-3/target/avr-atmega328p/debug/deps" "-L" "/home/thoth/src/rust-arduino-blink-3/target/debug/deps" "-L" "/home/thoth/src/rust-arduino-blink-3/target/avr-atmega328p/debug/build/bacon-c6b054653910c446/out" "-L" "/home/thoth/.rustup/toolchains/nightly-2021-01-07-x86_64-unknown-linux-gnu/lib/rustlib/avr-atmega328p/lib" "-Wl,--start-group" "-Wl,-Bstatic" "/tmp/rustcKtTmC9/libbacon-279c1aaca7a35b3b.rlib" "-Wl,--end-group" "/home/thoth/src/rust-arduino-blink-3/target/avr-atmega328p/debug/deps/libcompiler_builtins-49233f77b92d585e.rlib" "-Wl,-Bdynamic" "-lstdc++" "-lgcc"
= note: /usr/libexec/gcc/avr/ld: cannot find -lstdc++
collect2: error: ld returned 1 exit status
error: aborting due to previous error; 1 warning emitted
error: could not compile `rust-arduino-blink-3`我尝试从命令行运行avr-gcc,并发现如果删除-lstdc++并将/tmp/rustcKtTmC9/libbacon-279c1aaca7a35b3b.rlib替换为target/avr-atmega328p/debug/build/bacon-c6b054653910c446/out/libneopixel.a (因为/tmp/锈迹*目录被删除),编译就会成功(并且能够使用avrdude安装.elf )。
调整锈蚀构建过程以使其成功的正确方法是什么(要么删除-lstdc++,要么添加使其能够找到库的标志)?
发布于 2022-01-18 17:02:52
铁锈的cc机箱包括逻辑,如果设置了cpp标志,它就包括libstdc++。可以使用build.cpp_set_stdlib(None)禁用此功能。
https://stackoverflow.com/questions/70699064
复制相似问题