Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
17
Help us understand the problem. What is going on with this article?
@reki2000

Windows 10 で Rust のインストール

More than 1 year has passed since last update.

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"

で解決できました。

17
Help us understand the problem. What is going on with this article?
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
reki2000
3Dエンジンの中身とかCPUを作るとかコンパイラを作るなど低レイヤ好きです。8bit時代のネタにはよく釣られます。昔から C、SQL、Java、Scala をよく使い、最近は Python や Go を使うことが多いですが、Julia や Rust がやりたいことに向いている気がしてきており勉強中です。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
17
Help us understand the problem. What is going on with this article?