2018年01月06日

Rust言語: xargo.exe, cargo-clone.exeをWindows上でインストールする方法 2018

Rust言語: xargo.exe, cargo-clone.exeをWindowsでインストール方法 2018
はじまり
Rust言語の「msvc版」の話。

Rust言語のソースをWindows上で「ARMマイコン等」にクロスコンパイルする場合、
cargo-clone.exe
xargo.exe
のコンパイル、インストールが必要らしい。 と思ったが、 cargo-cloneはなくてもOK(gitで直接持ってくればOK)、 xargoはバイナリが入手できるので cargo-cloneもxargoも無理に自前でコンパイルする必要はない様だ。 以下は参考程度。 前提条件: (1) Rustは「nightly版」が必要。
$ rustup default nightly
で切り替わる。 (2) cmakeがインストールされ、実行ファイルにPATHが通っていること。 (3) 「VS2017用 x86(またはx64) Native Tools」のコマンドライン上で作業を行うこと。 (VS2015用でもいいらしい。未確認) 手順
cargo install cargo-clone
cargo install xargo
でコンパイル、インストールされる。 時間は結構かかる。 ポイント: 普段は「msys2のコンソール」か「PowerShell上」でRust言語のコンパイルをしているが、 上記ツールのインストール時は(3)のコマンドライン上で実行しないとだめだった。 cmakeがないと「libssh2-sys」のコンパイルで失敗するし、 (3)上じゃない場合、最後の最後にリンクで失敗する。 orz orz xargo.exe バイナリ: xargoについてはコンパイル済みのバイナリがここから入手可能です。 https://github.com/japaric/xargo/releases Rustのバージョン: このブログを書いた時点のバージョン nightly-i686-pc-windows-msvc - rustc 1.24.0-nightly (8e7a609e6 2018-01-04) stable-i686-pc-windows-msvc - rustc 1.23.0 (766bd11c8 2018-01-01) 結果: ARM STM32マイコンのコンパイルをやってみたが、 多重定義エラーで玉砕中 orz 引き続き調査中。 ただし、Linux上でやれば無問題の可能性も否定できない。
error[E0152]: duplicate lang item found: `panic_fmt`.
  --> examples\panic.rs:32:1
   |
32 | / unsafe extern "C" fn rust_begin_unwind(
33 | |     args: core::fmt::Arguments,
34 | |     file: &'static str,
35 | |     line: u32,
...  |
48 | |     intrinsics::abort()
49 | | }
   | |_^
   |
   = note: first defined in crate `cortex_m_rt`.

error: aborting due to previous error

error: Could not compile `cortex-m-quickstart`.
サポートするクロスコンパイルターゲット:
$ rustc --print target-list
aarch64-linux-android
aarch64-unknown-cloudabi
aarch64-unknown-freebsd
aarch64-unknown-fuchsia
aarch64-unknown-linux-gnu
aarch64-unknown-linux-musl
arm-linux-androideabi
arm-unknown-linux-gnueabi
arm-unknown-linux-gnueabihf
arm-unknown-linux-musleabi
arm-unknown-linux-musleabihf
armv4t-unknown-linux-gnueabi
armv5te-unknown-linux-gnueabi
armv7-linux-androideabi
armv7-unknown-cloudabi-eabihf
armv7-unknown-linux-gnueabihf
armv7-unknown-linux-musleabihf
asmjs-unknown-emscripten
i586-pc-windows-msvc
i586-unknown-linux-gnu
i686-apple-darwin
i686-linux-android
i686-pc-windows-gnu
i686-pc-windows-msvc
i686-unknown-cloudabi
i686-unknown-dragonfly
i686-unknown-freebsd
i686-unknown-haiku
i686-unknown-linux-gnu
i686-unknown-linux-musl
i686-unknown-netbsd
i686-unknown-openbsd
mips-unknown-linux-gnu
mips-unknown-linux-musl
mips-unknown-linux-uclibc
mips64-unknown-linux-gnuabi64
mips64el-unknown-linux-gnuabi64
mipsel-unknown-linux-gnu
mipsel-unknown-linux-musl
mipsel-unknown-linux-uclibc
msp430-none-elf
powerpc-unknown-linux-gnu
powerpc64-unknown-linux-gnu
powerpc64le-unknown-linux-gnu
s390x-unknown-linux-gnu
sparc64-unknown-linux-gnu
sparc64-unknown-netbsd
sparcv9-sun-solaris
thumbv6m-none-eabi
thumbv7em-none-eabi
thumbv7em-none-eabihf
thumbv7m-none-eabi
wasm32-experimental-emscripten
wasm32-unknown-emscripten
wasm32-unknown-unknown
x86_64-apple-darwin
x86_64-linux-android
x86_64-pc-windows-gnu
x86_64-pc-windows-msvc
x86_64-rumprun-netbsd
x86_64-sun-solaris
x86_64-unknown-bitrig
x86_64-unknown-cloudabi
x86_64-unknown-dragonfly
x86_64-unknown-freebsd
x86_64-unknown-fuchsia
x86_64-unknown-haiku
x86_64-unknown-linux-gnu
x86_64-unknown-linux-gnux32
x86_64-unknown-linux-musl
x86_64-unknown-netbsd
x86_64-unknown-openbsd
x86_64-unknown-redox
posted by Copyright (C) avrin All Rights Reserved. at 14:12| Comment(0) | Rust言語 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。