У меня есть прошивка C для микроконтроллера Nordic nRF52832 BLE.Я хотел бы связать с ним новый код, написанный на Rust.
Когда я пытаюсь это сделать, компоновщик жалуется, что у меня есть два разных определения стека:
/nix/store/m7gf0nzixwgqk21an0fxc047qa0mvbng-gcc-arm-embedded-7-2018-q2-update/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/bin/ld: .stack_dummy has both ordered [`.stack_sizes' in /home/matthias/source/tbconnect/modem/target/thumbv7em-none-eabihf/release/libtbmodem.a(alloc-314aba8dbd2706e9.alloc.deuukmti-cgu.0.rcgu.o)] and unordered [`.stack' in .sdk/modules/nrfx/mdk/gcc_startup_nrf52.o] sections
Полагаю, важной частью здесь является то, что компоновщик сообщает мне, что в SDK Nordic есть .stack_dummy
для микроконтроллера BLE, а библиотека Rust предоставляет свое собственное определение стека.
На самом деле, я ожидаю, что код, скомпилированный как библиотека, не дает определения стека.Как бы я связал несколько библиотек в проект, если все они определяют стек?Я совершенно не прав с этим предположением?
Поэтому мне интересно, не ошибся ли я в своем определении библиотеки Rust.
Cargo.toml:
[package]
name = "tbmodem"
version = "0.1.0"
edition = "2018"
publish = false
[lib]
crate-type = ["staticlib"]
[profile.dev]
panic = "abort"
[profile.release]
panic = "abort"
[dev-dependencies]
timebomb = "0.1.2"
Затем код компилируется с cargo build --release --target thumbv7em-none-eabihf