ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪
関連ページ
------------------- ↓ 余談はここから ↓-------------------
こんな記事を見た。
Windows 10にRustをインストールする方法
https://news.mynavi.jp/article/rust-4/
まずVisualStdioを用意します・・・
そんなわけない・・・かな?
パッケージを使うときにCコンパイラが登場するけど、
言語の学習段階ではいらないし。
VCじゃなくてMinGWでもいけるやろ。
丁度Rustを勉強しているとこだった。
WSLで作るかScoopで作るか並行してやっていたが、
いったんScoopで環境ができたのでそちらを記録しておく。
(WSLは別記事かな。)
例によってインストールから記述するので、
適当に読み飛ばしてほしい。
------------------- ↓ 本題はここから ↓-------------------
Scoopのインストール
以下のページを参照のこと。
Scoopで作るLinux on Windows開発環境
※busybox入れてる方は削除をしておくこと。
(理由は後述を参照, gowで代替)
gccのインストール
便宜上必要なので入れておく
PS C:\> scoop install pkg-config openssl gcc
PS C:\> which gcc
C:\Users\magic\scoop\apps\gcc\current\bin\gcc.EXE
PS C:\> which ar
C:\Users\magic\scoop\apps\gcc\current\bin\ar.EXE
インストール後は一度PowerShell閉じた方がいいやも。
rustupのインストール
rustupを直接ダウンロードしてインストールすることもできるが、
今回はScoopで統一しておく。
(そのためのパッケージマネージャだし)
Scoopパッケージにはrustup
とrust
というRust関連が二つある。
簡単に言うとrust
は一般ユーザー向け(コマンドだけ入れる)、
rustup
は開発者ユーザー向けってところか。(大雑把すぎか、まぁいいや。)
rust
が先にインストールされているとrustup
がインストールできない(内容が被っている)
なのでrust
は削除しておく。
PS C:\> scoop uninstall rust # エラーがでてもスルーで
PS C:\> scoop install rustup
Scoopでインストールすると、
デフォルトの環境変数は以下のようになる。
CARGO_HOME=C:\Users\magic\scoop\persist\rustup\.cargo
RUSTUP_HOME=C:\Users\magic\scoop\persist\rustup\.rustup
ツールチェインを設定
rust開発に必要なrustc, cargoなどのツール群。
これらをstable, beta, nightlyから選ぶわけだが、
まぁstableでいいだろう。
stable-gnuとstable-msvcがあるのだが、
Windows上のVisualStudio(VSCodeを除く)で開発するときはmsvc、
その他の環境(WSLやVSCode, Clionなど)で開発するときはgnuを選ぶことになる。
PS C:\> rustup install stable
PS C:\> rustup default stable
(rustup入れた時点でこうなっている)
標準ライブラリをインストール
これがあればコード補完が行われる。
PS C:\> rustup component add rust-src
はろーわーるど
VSCodeやCLionのようなIDEを使うのがいいと思うが、
それらは個々人にお任せするとして。
ここではHelloしてみよう。
PS C:\> cargo new hello
PS C:\> cd hello
PS C:\hello\> cargo build
PS C:\hello\> ./target/debug/hello.exe
Hello, world!
いろいろ、勉強になった。
なんとなくだけどWSLの方が環境作りやすいかも。
次はそっちで作ってみよう。
------------------- ↓ 後書はここから ↓-------------------
ガチでwindowsアプリを開発をするのならば、
VisualCのコンポーネントが必要になるだろう。
そのときは先述のページのように、
VisualC関連のものをインストールすることになる。
https://visualstudio.microsoft.com/ja/downloads/
ツールチェイン設定をmsvcがついているものにすればすぐ切り替えられる。
PS c:\> rustup install stable stable-msvc
PS c:\> rustup default stable-msvc
cargo-addをインストール
cargoパッケージを利用するとき、
tomlファイルを直接いじる必要があるのだが、
ちょっと面倒くさい。
そこで、それらをコマンドだけで調整してくれるコマンドをあらかじめ入れておく。
cargo-editパッケージの一機能なのだが、
後述したようにインストールできなかったので、
addだけ入れておく。
$ cargo install cargo-add
$ cargo add csv --version 1.1.3
ハマりポイント
cargo-editがインストールできない
たかが、テキスト調整ソフトのくせにインストールがやたら大変。
しかもエラーメッセージがやたら長いのも困ったもの。
でもこれのインストールが失敗するのではほかのパッケージでもこけるので、
調査を継続。
error: linking with `gcc` failed: exit code: 1
・・・
error: aborting due to previous error
error: could not compile `cargo-edit`.
warning: build failed, waiting for other jobs to finish...
error: linking with `gcc` failed: exit code: 1
・・・
= note: ld: cannot find -lntdll
error: aborting due to previous error
error: failed to compile `cargo-edit v0.5.0`, intermediate artifacts can be found at `C:\Users\magic\AppData\Local\Temp\cargo-installNTRH
cq`
Caused by:
could not compile `cargo-edit`.
(゜-゜) ???
わけわからん。
ldコマンドに lntdll って項目がないってことか?
あれこれ調べてみたけど、
これはmsvcコンポーネントが必要なのかもしれん。
backtraceのインストールに失敗する
error: failed to run custom build command for `backtrace-sys v0.1.34`
Caused by:
process didn't exit successfully: `C:\Users\magic\AppData\Local\Temp\cargo-installdVH5NG\release\build\backtrace-sys-1782e6d01e01593c\b
uild-script-build` (exit code: 1)
--- stdout
cargo:rustc-cfg=rbt
TARGET = Some("x86_64-pc-windows-gnu")
OPT_LEVEL = Some("3")
HOST = Some("x86_64-pc-windows-gnu")
CC_x86_64-pc-windows-gnu = None
CC_x86_64_pc_windows_gnu = None
HOST_CC = None
CC = None
CFLAGS_x86_64-pc-windows-gnu = None
CFLAGS_x86_64_pc_windows_gnu = None
HOST_CFLAGS = None
CFLAGS = None
CRATE_CC_NO_DEFAULTS = None
CARGO_CFG_TARGET_FEATURE = Some("fxsr,sse,sse2")
running: "gcc.exe" "-O3" "-ffunction-sections" "-fdata
('ω') ???
わけわからん。
けどエラーメッセージをよく見てみると以下の記述があった。
06b64275ba4032\\out\\src/libbacktrace/pecoff.o"
cargo:warning=BusyBox v1.32.0-FRP-3329-gcf0fa4d13 (2020-01-09 09:35:27 GMT) multi-call binary
cargo:warning=
cargo:warning=Usage: ar [-o] [-v] [-p] [-t] [-x] ARCHIVE FILES
cargo:warning=
cargo:warning=Extract or list FILES from an ar archive
cargo:warning=
cargo:warning= -o Preserve original dates
cargo:warning= -p Extract to stdout
cargo:warning= -t List
cargo:warning= -x Extract
cargo:warning= -v Verbose
cargo:warning=C:\ProgramData\scoop\apps\busybox\current\busybox.exe: unknown option -- s
(。´・ω・)ん?なんでここでbusyboxがでてくんの?
どうやらarコマンドが名称被りのようだ。
busyboxをいったん削除
PS C:\> scoop uninstall busybox