Help us understand the problem. What is going on with this article?

Windows 10 で Rust のインストール

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 を選択。

image.png

インストーラーが起動するので、画面から "Visual C++ Build Tool" を選択。

  • 画面右側はデフォルトのまま選択

image.png

※関係ありませんが Windows でのスクショは PrintScreen だけではなく、 Win + Shift + S でスクショツールが起動するようになったのですね。便利。(Macでは Cmd + Shift + Ctrl + 4 を多用していたので同じものがあるといいなーと思っていました)

トラブル

以下のようなサンプルをコンパイルしようとするとエラーになりました

main.rs
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"

で解決できました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away