1. dozo

    Posted

    dozo
Changes in title
+scoopで作るRustのWindows開発環境
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,251 @@
+[Rust]:https://www.rust-lang.org
+[Scoop]:https://scoop.sh
+[Scoopで作るLinux on Windows開発環境]:https://qiita.com/dozo/items/a6f63aa1b03d1773b8ec
+
+
+
+ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪
+
+関連ページ
+
+* [Scoopで作るLinux on Windows開発環境]
+
+
+
+
+----
+------------------- ↓ 余談はここから ↓-------------------
+
+こんな記事を見た。
+
+[Windows 10にRustをインストールする方法](https://news.mynavi.jp/article/rust-4/)
+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
+```