我使用Rustup-init.exe在Rust 10上安装了Rust,这是Rust Book推荐的方法。 安装程序告诉我,Rust需要VS2013或更新版本的C运行时。 我安装了VS2017,我认为Rust不支持VS2017,所以同意安装C-runtime。 安装成功完成。
main.rs
:
fn main() { println!("Hello, world!"); }
编译:
> rustc main.rs error: linking with `link.exe` failed: exit code: 1 | = note: "link.exe" "/NOLOGO" "/NXCOMPAT" "/LIBPATH:C:\\Users\\***\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "main.0.o" "/OUT:main.exe" "/OPT:REF,NOICF" "/DEBUG" "/LIBPATH:C:\\Users\\***\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "C:\\Users\\***\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libstd-0a78323911070f99.rlib" "C:\\Users\\***\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librand-c279a51d66700350.rlib" "C:\\Users\\***\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcollections-d7bf31a4ca1ea637.rlib" "C:\\Users\\***\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libstd_unicode-d367c3ba0db49600.rlib" "C:\\Users\\***\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libpanic_unwind-2d4bf02140c11dcb.rlib" "C:\\Users\\***\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libunwind-add7a84d7e82d084.rlib" "C:\\Users\\***\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liblibc-84688accbc86d6b7.rlib" "C:\\Users\\***\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liballoc-fe2e68b21f0bdd7a.rlib" "C:\\Users\\***\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liballoc_system-7fc0381594c93f56.rlib" "C:\\Users\\***\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcore-ea9d77e7c23fe65c.rlib" "C:\\Users\\***\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcompiler_builtins-91b619d34dd1f5aa.rlib" "advapi32.lib" "ws2_32.lib" "userenv.lib" "shell32.lib" "msvcrt.lib" = note: /usr/bin/link: extra operand '/LIBPATH:C:\\Users\\***\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib' Try '/usr/bin/link --help' for more information. error: aborting due to previous error
link.exe
LIBPATH
arg被指定了两次。
这是怎么回事?
> rustc --version rustc 1.17.0 (56124baa9 2017-04-24)
正如锈蚀文件所说:
正如Rust下载页面中提到的那样,Windows上有两个ABI:Visual Studio使用的本机(MSVC)ABI,以及GCC工具链使用的GNU ABI。 你需要哪种版本的Rust,主要取决于你想要与哪些C / C ++库进行互操作:与Visual Studio生成的软件互操作使用Rust的MSVC版本; 与使用MinGW / MSYS2工具链构建的GNU软件进行互操作,使用GNU构建。
您已经安装了MSVC工具链。 但是,您正在命令行中运行编译器,其中link.exe
不指向MSVC链接器,而是指向GNU工具链 – MSVC不会调用其链接器/usr/bin/link
或使用诸如--help
选项!
你应该配置你的shell,使得MSVC链接器在PATH中最重要,或者如果你的目标是切换到GNU ABI。
比较两者的帮助输出:
$ link --help Usage: link FILE1 FILE2 or: link OPTION Call the link function to create a link named FILE2 to an existing FILE1. --help display this help and exit --version output version information and exit GNU coreutils online help: <http://www.gnu.org/software/coreutils/> Full documentation at: <http://www.gnu.org/software/coreutils/link> or available locally via: info '(coreutils) link invocation'
> link /help Microsoft (R) Incremental Linker Version 14.10.25017.0 Copyright (C) Microsoft Corporation. All rights reserved. For help on Linker, type `link /link' or `link' For help on Library Manager, type `link /lib' or `lib' For help on Dumper, type `link /dump' or `dumpbin' For help on Editor, type `link /edit' or `editbin' For help on CvtCIL, type `link /cvtcil'
我以为Rust不支持VS2017呢
它支持 VS2017就好了; 如1.17发行说明中所述,问题是由于MSVC安装位置的变化,无法自动查找MSVC安装 。 从具有适当环境的shell中运行Rust编译器可以正常工作。