我正在编写针对使用锌的STM32F407处理器的Rust程序。我希望能够生成链接器映射文件。我发现我可以将以下内容放在我的主页中,这给了我想要的结果:
#![feature(link_args)]
#[link_args = "-Wl,-Map=blink_stm32f4.map"]
extern {}
但是,the documentation for link_args
建议不要使用此方法。
还有哪些方法可以让链接器生成映射文件?
答案 0 :(得分:4)
link-args
可以通过rustc
传递给rustc -C link-args="-Wl,-Map=blink_stm32f4.map" test.rs
。
cargo
部分中有rustflags
build
选项。见cargo config。它的工作原理如下:
$ cargo new --bin testbin
$ cd testbin
$ cat .cargo/config
[build]
rustflags = ["-Clink-args=-Wl,-Map=/tmp/blink_f7.map"]
$ cargo build
linker
配置中还有cargo
选项。我不想尝试通过
此选项gcc
加flags
,仅gcc
,但您可以编写gcc
包装脚本,如:
$ cat my-linker.sh
#!/bin/sh
arm-...-gcc -Wl,-Map=blink_stm32f4.map $@
答案 1 :(得分:0)
我尝试在 .cargo/config
中添加类似的内容:
[build]
rustflags = ["-Clink-args=-Wl,-Map=/tmp/app.map"]
但是我遇到了错误:
<块引用>rust-lld: 错误:未知参数 '-Wl,-Map=/tmp/app.map'
根据this blog,我把它改成:
[build]
rustflags = ["-Clink-args=-Map=/tmp/app.map"]