2016-09-03 4 views
5

私は亜鉛を使用してSTM32F407プロセッサを対象としたRustプログラムを作成しています。私はリンカマップファイルを生成できるようにしたいと思います。私は私が私のmain.rsに次のように置くことができることを発見しました、これは私の望ましい結果が得られます。貨物を使用してマップファイルを作成するリンカーを取得する方法

#![feature(link_args)] 
#[link_args = "-Wl,-Map=blink_stm32f4.map"] 
extern {} 

しかし、the documentation for link_argsは、このメソッドを使用しないように示唆しています。

リンカーにマップファイルを作成させる他の方法はありますか?

答えて

3

link-argsrustcrustc -C link-args="-Wl,-Map=blink_stm32f4.map" test.rsで渡すことができます。

そして、選択肢はcargorustflagsであり、buildセクションです。 cargo configを参照してください。それは次のように機能します。

$ cargo new --bin testbin 
$ cd testbin 
$ cat .cargo/config 
[build] 
rustflags = ["-Clink-args=-Wl,-Map=/tmp/blink_f7.map"] 
$ cargo build 

cargo configにlinkerオプションがあります。 [ビルド] rustflags = [「-Wl :私が追加しようとしました

$ cat my-linker.sh 
#!/bin/sh 

arm-...-gcc -Wl,-Map=blink_stm32f4.map [email protected] 
+1

:私は、 を経由してこのオプションgccプラスflagsに合格しようとするだけgcc、しかし、あなたは次のようgccラッパースクリプトを書くことができません、-Map = blink_f7.map」] 私Cargo.tomlファイルへと、私は次の警告 警告を得る:私はビルドするために毎晩、2016年5月24日を使用していbuild.rustflags :未使用のマニフェストキーを。 Google検索で見つかったヒントの多くは古いバージョンの錆/貨物でしか動作しないようです。 –

+1

私はmy-linker.shスクリプトを稼働させました - ありがとう。それはLinuxとOSXで動作するはずです。 私は1つのファイルよりもはるかに大きなものをビルドしていますので、rustcを直接呼び出すことがどのように役立つのかよくわかりません。リンク時に亜鉛とその依存関係を含める必要があります。しかし、3の1はまだ進行中です。 –

+1

@DaveHylands私は 'cargo' configの使い方を説明したリンカを' .cargo/config'で設定する方法を説明しています。また、別のarchiticturesに異なる値を設定することもできます。 – fghj

関連する問題