Установка ржавчины на Windows
Я пытался заставить Rust работать на моей Windows-коробке. Я следовал инструкциям, однако, когда я попробовал программу hello world, она выкладывается ниже. Похоже, что он не смог подключиться к gcc.. и у меня есть gcc там. Может ли кто-нибудь помочь мне понять, в чем здесь проблема?
$ rustc foo.rs
error: linking with `gcc` failed: exit code: 1
note: gcc arguments: '-m32' '-LC:\Program Files (x86)\Rust\bin\rustlib\i686-pc-m
ingw32\lib' '-o' 'foo' 'foo.o' '-shared-libgcc' '-LC:\MinGW\msys\1.0\home\ENwank
wo\.rust' '-LC:\MinGW\msys\1.0\home\ENwankwo' 'C:\Program Files (x86)\Rust\bin\r
ustlib\i686-pc-mingw32\lib\libstd-3e5aeb83-0.9.rlib' 'C:\Program Files (x86)\Rus
t\bin\rustlib\i686-pc-mingw32\lib\libgreen-83b1c0e5-0.9.rlib' 'C:\Program Files
(x86)\Rust\bin\rustlib\i686-pc-mingw32\lib\librustuv-2ba3695a-0.9.rlib' '-lws2_3
2' '-lpsapi' '-liphlpapi' '-lmorestack'
note: gcc: fatal error: -fuse-linker-plugin, but liblto_plugin-0.dll not found
compilation terminated.
error: aborting due to previous error
task 'rustc' failed at 'explicit failure', C:\bot\slave\dist2-win\build\src\libs
yntax\diagnostic.rs:75
task '<main>' failed at 'explicit failure', C:\bot\slave\dist2-win\build\src\lib
rustc\lib.rs:453
2 ответа
Вот как установить Rust в Windows с помощью Visual Studio Code и MSYS2 MinGW
Я не хотел устанавливать Rust в Windows с необходимыми «Microsoft C++ Build Tools», потому что для этого потребуется слишком много места на диске. Чтобы получить Microsoft C++ Build Tools в Windows, вам необходимо загрузить полный Windows SDK, который очень велик (я думаю, более 4 ГБ).
Установочной версии MSYS2 требуется 1,61 ГБ для MSYS2.
Rust устанавливает около 1,46 ГБ файлов - в основном в папку «C:\Users\ user.rustup» при использовании параметра «x86_64-pc-windows-gnu» (для установки MSYSMinGW).
Rust занимает 900 МБ после установки при использовании "x86_64-pc-windows-msvc" (для установки "Microsoft C++ Build Tools").
Для Rust внутри VS Code вы можете установить этот плагин Rust из [Link1] ниже, внизу сообщения:
После установки программ я мог использовать терминал Visual Studio Code (настроенный для MSYS2 MinGW a Console) и выполнять Cargo, rustc, компилировать файл .rs и запускать полученный файл .exe.
Я установил программы внутри этих папок:
D:\Applications\msys64
D:\Applications\VSCode
rustup-init.exe устанавливает папку .cargo в папку по умолчанию:
C:\Users\user\.cargo
Мои установочные ФАЙЛЫ находятся в папках:
D:\Applications\msys64\home\user\.bash_profile
C:\Users\user\.cargo\config
( The settings files for VS Code are created and edited inside the Visual Studio Code editor, you don't need to the containing folder and open the files.
C:\Users\user\AppData\Roaming\Code\User\settings.json
C:\Users\user\AppData\Roaming\Code\User\keybindings.json
)
Paths for other files used inside config files:
D:\Applications\msys64\usr\bin\bash.exe
D:\Applications\msys64\usr\bin\pacman.exe
Моя папка для файлов Rust:
D:\Rust_Projects
Файлы конфигурации, используемые во время установки:
(Вам необходимо изменить пути для ваших установок.)
Содержимое файла «C:\Users\ user.cargo\config»:
В файл "D: \ Applications \ msys64 \ home \ user.bash_profile" добавлены строки:
Часть 1 - Этапы установки с подробностями:
Я буду использовать код, необходимый для запуска программ установки внутри «кавычек» - удаляйте кавычки при запуске команд. Например: «pacman -Syu» - удалите кавычки и просто запустите pacman -Syu.
Измените пути в руководстве для ваших установок.
Необходимые программы: VS Code, MSYS2 (то есть файлы / инструменты из MinGW), Rust и плагин для VS Code для запуска пользовательской консоли MSYS2 MinGW вместо консолей по умолчанию (например, cmd или Powershell) и плагин для лучший опыт программирования на Rust, если хотите. Убедитесь, что в настройках брандмауэра Windows разрешены подключения для MSYS2, VS Code, установщика Rust - rustup-init.exe (возможно, позже - rustup - в этом руководстве он вам не понадобится, и D: \ Applications \ msys64) \ usr \ bin \ pacman.exe). Это позволит программам загружать необходимые файлы для компонентов или плагинов.
а) Загрузите портативную версию Visual Studio Code для Windows с сайта filehorse.com и извлеките файлы (или установите ее любым удобным для вас способом).
б) Установите MSYS2 - это примерно 1,61 ГБ. Загрузите MSYS2 и следуйте инструкциям по установке - я упомяну самые важные шаги: Установите MSYS2 и не снимайте флажок: «запустить MSYS2 64bit» в конце установки. Запустите «pacman -Syu» в консоли, которая появится после установки. Это оболочка MSYS2.
!!! На следующем шаге будьте осторожны и выберите правильный ярлык - не выбирайте MinGW. Затем запустите MSYS2 MSYS »из меню« Пуск »(это« D: \ Applications \ msys64 \ msys2_shell.cmd -msys »). Это оболочка MSYS2.
Следующим шагом является загрузка программ, необходимых для сборки для платформы Windows, программ, написанных на Rust: Из меню «Пуск» запустите «MSYS2 MinGW 64-bit» (это «D: \ Applications \ msys64 \ msys2_shell.cmd -mingw64» ). Это для MinGW, и у него есть параметр, отличный от используемого выше ярлыка. Запустите «pacman -S --needed base-devel mingw-w64-x86_64-toolchain».
В инструкциях msys2.org говорится, что нужно запустить «pacman -S --needed base-devel mingw-w64-x86_64-toolchain». Я просмотрел файлы --needed base-devel и подумал, что они не нужны для запуска программ на Rust, но я не эксперт в этом программном обеспечении. Вы можете установить их, если хотите. Простая программа rust "hello world", которую я написал на языке rust с использованием VS Code, а также инструменты / программы rustc и cargo, работала без установки файлов "--needed base-devel".
После установки Rust и настройки файлов конфигурации вы можете использовать ярлык «MSYS2 MinGW 64-bit» для запуска команд «rustc» и «cargo» (cmd.exe не распознает команды rustc или cargo, но это нормально).
c) Установите Rust для Windows. Загрузите установщик: rustup-init.exe с сайта rust-lang.org.
Браузер должен распознать, что вы используете Windows, и дать вам ссылку «СКАЧАТЬ RUSTUP-INIT.EXE (64-BIT)», то есть: [...] static.rust-lang.org/rustup/dist/x86_64 -pc-windows-msvc / rustup-init.exe
Run rustup-init.exe . It is better to launch a console with cmd.exe and launch rustup-init.exe from there.
choose "Continue? (y/N)" by typing y and hitting the Enter key.
choose "2) Customize installation" using the keyboard.
paste or type the option: "x86_64-pc-windows-gnu" .
hit enter for the rest of the options.
Finally enter 1 to proceed with the installation.
Если у вас уже установлен rustup, следуйте указаниям в руководстве по внизу страницы с пошаговой инструкцией по установке-rust-and-cargo-for-mingw-with-msys2:
"Примечание. Если rustup уже установлен, то повторный запуск rustup-init на самом деле не установит запрошенную цепочку инструментов. Вместо этого запустите цепочку инструментов rustup install stable-x86_64-pc-windows-gnu, если у вас уже есть цепочка инструментов на основе MSVC. Затем запустите rustup default stable-x86_64-pc-windows-gnu, чтобы установить набор инструментов на основе GNU по умолчанию ».
г) Создайте файл .cargo\config
Подробнее см .: ссылке Source 1Источник 1 Ссылка внизу страницы с пошаговой инструкцией по установке-ржавчине-и-карго-для-mingw-with-msys2.
Чтобы использовать компоновщик MinGW и библиотеки, которые вы установили с MSYS2, создайте файл .cargo\config, расположенный в папке .cargo, то есть: «C:\Users\ user.cargo\config». Этот "конфигурационный" файл должен содержать:
[target.x86_64-pc-windows-gnu]
linker = "D:\\Applications\\msys64\\mingw64\\bin\\gcc.exe"
ar = "D:\\Applications\\msys64\\mingw64\\bin\\ar.exe"
Измените пути для ваших установок.
Добавьте путь для Rust к MSYS2 следующим образом: Отредактируйте файл ".bash_profile" (D:\Applications\msys64\home\user.bash_profile) и добавьте 2 строки:
# my custom path for Rust
export PATH="/c/Users/user/.cargo/bin":$PATH
Не забудьте изменить расположение папок в соответствии с вашей установкой. Вы также можете изменить переменную HOME, добавив строку, указывающую на папку "D:\Rust_Projects":
export HOME="d:\\Rust_Projects"
Это позволит вам перейти в домашнюю папку в консоли MSYSMinGW с помощью команды "cd ~".
Если вы хотите, чтобы ярлык «MSYS2 MinGW 64-bit» открывался при запуске в вашей домашней папке, добавьте строки в файл «D: \ Applications \ msys64 \ home \ user.bash_profile»:
export HOME="d:\\Rust_Projects"
cd ~
д) Настройка VS Code:
Хорошие шрифты для использования внутри VS Code: Fira Code, Consolas, DejaVu Sans Mono, Droid Sans Mono Slashed, Inconsolata-g, Bitstream Vera Sans Mono, Lucida Console, возможно Menlo Regular (использовался в MacOS), Meslo LG DZ.
Для работы в Rust вы можете установить расширение из [Ссылка 1] ниже, внизу сообщения.
Чтобы иметь возможность добавить консоль MSYS2 MinGW в VS Code, установите расширение «Shell launcher» (Tyriar.shell-launcher), написанное Дэниелом Иммсом с торговой площадки - ссылка находится внизу страницы:
Это позволит создавать файлы проекта и запускать приложения из Visual Studio Code.
(Вы можете скачать расширения VS Code и установить их из загруженных файлов - справа от текста описания есть ссылка «Скачать расширение»)
ВНУТРИ ГЛАВНЫХ открытых и закрытых КРЕПЕЖНЫХ КРОНШТЕЙНОВ {} для файла VS Code "settings.json" добавьте следующие строки:
"shellLauncher.shells.windows":
[
{
"shell": "D:\\Applications\\msys64\\usr\\bin\\bash.exe",
"label": "MSYS2",
"args": ["--login", "-i"],
"env": {
"MSYSTEM": "MINGW64",
"CHERE_INVOKING": "1",
"MSYS2_PATH_TYPE": "inherit"
}
},
{
"shell": "C:\\Windows\\System32\\cmd.exe",
"label": "cmd"
},
{
"shell": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
"label": "PowerShell"
},
/*
{
"shell": "C:\\Program Files\\Git\\bin\\bash.exe",
"label": "Git bash"
},
{
"shell": "C:\\Windows\\System32\\bash.exe",
"label": "WSL Bash"
}
*/
]
Поместите запись MSYS2 вверху, если вы хотите быть вверху, в меню расширения. Вы должны назначить сочетание клавиш, чтобы иметь возможность выбирать оболочку / консоль MSYS2. Я использовал комбинацию клавиш Ctrl + Alt + Z, чтобы запустить меню расширения «Shell launcher» для выбора новой консоли. Я использовал ярлык и выбрал в меню консоль MSYS2.
Чтобы изменить сочетания клавиш, выберите: Файл> Настройки> Сочетания клавиш. В поле сочетаний клавиш введите shellLauncher.launch и назначьте для него сочетание клавиш. Вы будете использовать его для выбора новой оболочки / консоли MSYS2 внутри VS Code.
Это поместит следующие строки в "C:\Users\ user \ AppData \ Roaming \ Code \ User \ keybindings.json":
// Place your key bindings in this file to override the defaultsauto[]
[
{
"key": "ctrl+alt+z",
"command": "shellLauncher.launch"
}
]
Если вы хотите, чтобы оболочка / консоль по умолчанию была открыта как MSYS2 , поместите эти строки в файл settings.json - между основными фигурными скобками:
// Set New shell/console/terminal Profiles:
//
"terminal.integrated.profiles.windows":
{
/*
"PowerShell":
{
"source": "PowerShell",
"icon": "terminal-powershell"
},
"Command Prompt2":
{
"path":
[
"${env:windir}\\Sysnative\\cmd.exe",
"${env:windir}\\System32\\cmd.exe"
],
"args": [],
"icon": "terminal-cmd"
},
"Bash": {
"path": ["C:\\user\bin\\git\bin\bash.exe"]
},
*/
"MSYS2":
{
//"path": "D:\\Applications\\msys64\\usr\\bin\\bash.exe",
//"args": ["--login", "-i"],
"path": "D:\\Applications\\msys64\\msys2_shell.cmd",
"args": ["-defterm", "-mingw64", "-no-start", "-here"],
"label": "MSYS2",
"env":
{
// If you require a MinGW toolchain, set the MSYSTEM environment variable to select a toolchain. Recognized values are MSYS (default), MINGW32 or MINGW64.
"MSYSTEM": "MINGW64",
// To inhibit the working directory change from your current directory, set the CHERE_INVOKING environment variable to a non-empty value
// CHERE_INVOKING variable is used to preserve the current working directory - the terminal will change the directory to the current project directory
"CHERE_INVOKING": "1",
"MSYS2_PATH_TYPE": "inherit"
}
},
},
После создания этих новых профилей терминала выберите профиль по умолчанию на панели «Терминал», используя стрелку вниз, расположенную рядом с плюсом, значком корзины и x-кнопкой закрытия справа от панели терминала. Затем нажмите «Выбрать профиль по умолчанию» и в верхнем всплывающем окне нажмите MSYS2.
Вместо строк выше вы можете использовать устаревшую настройку, но это не рекомендуется:
// Set the default shell/console:
//
// the setting "terminal.integrated.shell.windows" works but is deprecated
// This will start the MSYS2 bash shell properly so your .bash_login gets executed:
"terminal.integrated.shell.windows": "C:\\msys64\\msys2_shell.cmd",
"terminal.integrated.shellArgs.windows": ["-defterm", "-mingw64", "-no-start", "-here"]
С новым терминалом MSYS2 MinGW внутри VS Code вы можете запускать команды: cargo, rustc, rustup и т. Д. (С их параметрами).
Ссылка 1: https://marketplace.visualstudio.com/items?itemName=rust-lang.rust
Ссылка для загрузки расширения "Shell launcher": https://marketplace.visualstudio.com/items?itemName=Tyriar.shell-launcher
источники вдохновения:
Как интегрировать оболочку MSYS2 в код Visual Studio в Window?
https://gist.github.com/dhkatz/106891324c9624074a84d11e2691144b
Как мне изменить порядок $PATH?
Вот изображение с результатом:Rust работает внутри VS Code с терминалом MSYS
Этот вопрос старый, но за это время многое изменилось.
Самый простой способ установки в Windows - перейти на страницу установки Rust, скачать и запустить rustup-init.exe. Устанавливает rustc
, rustup
и подобные инструменты. Это просто работает ™.