Rust の Windows 環境構築で少しだけハマったのでメモ代わりです。
インストール
rust の公式ページ に従って rustup-init.exe
をインストール。
環境変数PATH
に%USERPROFILE%/.cargo/bin
を追加するよう言われるので追加。
rustup set default-host x86_64-pc-windows-msvc
しておく。
続いて、VC Build Tools が必要とのことなのでインストール。
Microsoftの Visual Studioページ トップ下の「すべてのダウンロード」から Visual Studio 2019 のツールをクリックして開き、Build Tools for Visual Studio 2019 を選択。
インストーラーが起動するので、画面から "Visual C++ Build Tool" を選択。
- 画面右側はデフォルトのまま選択
※関係ありませんが Windows でのスクショは PrintScreen だけではなく、 Win + Shift + S でスクショツールが起動するようになったのですね。便利。(Macでは Cmd + Shift + Ctrl + 4 を多用していたので同じものがあるといいなーと思っていました)
トラブル
以下のようなサンプルをコンパイルしようとするとエラーになりました
fn main() {
println!("Hello")
}
以下かがエラー内容です。
メッセージの日本語が表示されないのも何気につらい。chcp 437
して英語のコードページに切り替えてもダメでした。rust windows link error 1112
などで検索してもいまいちヒットせず……
c:\me\git\rust-tutorial>rustc main.rs
error: linking with `link.exe` failed: exit code: 1112
|
= note: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\BuildTools\\VC\\Tools\\MSVC\\14.16.27023\\bin\\HostX86\\x86\\link.exe" "/NOLOGO" "/NXCOMPAT" "/LIBPATH:C:\\Users\\reki\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "main.main.7rcbfp3g-cgu.0.rcgu.o" "main.main.7rcbfp3g-cgu.1.rcgu.o" "main.main.7rcbfp3g-cgu.2.rcgu.o" "main.main.7rcbfp3g-cgu.3.rcgu.o" "main.main.7rcbfp3g-cgu.4.rcgu.o" "main.main.7rcbfp3g-cgu.5.rcgu.o" "/OUT:main.exe" "main.4s37gsrti678ik8u.rcgu.o" "/OPT:REF,NOICF" "/DEBUG" "/NATVIS:C:\\Users\\reki\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\intrinsic.natvis" "/NATVIS:C:\\Users\\reki\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\liballoc.natvis" "/NATVIS:C:\\Users\\reki\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\libcore.natvis" "/LIBPATH:C:\\Users\\reki\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "C:\\Users\\reki\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libstd-c418a1c7c96bdbae.rlib" "C:\\Users\\reki\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libpanic_unwind-740e55ec30ec9b42.rlib" "C:\\Users\\reki\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librustc_demangle-4e3d4b2c73be2130.rlib" "C:\\Users\\reki\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libhashbrown-e03c95365300773b.rlib" "C:\\Users\\reki\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librustc_std_workspace_alloc-9b63ec27f8df7123.rlib" "C:\\Users\\reki\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libunwind-cc811f306714ba24.rlib" "C:\\Users\\reki\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liblibc-dee84a63f4b90027.rlib" "C:\\Users\\reki\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liballoc-7d070a58cfb70fe0.rlib" "C:\\Users\\reki\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librustc_std_workspace_core-10ec18f1dfe36e70.rlib" "C:\\Users\\reki\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcore-e0e69d50f48d4667.rlib" "C:\\Users\\reki\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcompiler_builtins-45eb0e961cc324b2.rlib" "advapi32.lib" "ws2_32.lib" "userenv.lib" "msvcrt.lib"
= note: Non-UTF-8 output: msvcrt.lib(chkstk.obj) : fatal error LNK1112: \x83\x82\x83W\x83\x85\x81[\x83\x8b\x82\xcc\x83R\x83\x93\x83s\x83\x85\x81[\x83^\x81[\x82\xcc\x8e\xed\x97\xde \'x86\' \x82\xcd\x91\xce\x8f\xdb\x83R\x83\x93\x83s\x83\x85\x81[\x83^\x81[\x82\xcc\x8e\xed\x97\xde \'x64\' \x82\xc6\x8b\xa3\x8d\x87\x82\xb5\x82\xc4\x82\xa2\x82\xdc\x82\xb7\x81B\r\n
error: aborting due to previous error
これは VisualStudio の LNK1112 と LNK1158 の対処 にも説明のあるエラーで、VC Build Tools の設定が 32bit 向けになっているのが原因でした。
vcvars64.bat
を実行すればよいのですが、これがどこにあるのか見つけるのに少し苦労しました。
"c:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvars64.bat"
で解決できました。