Установка ржавчины на 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?

https://www.msys2.org/

Вот изображение с результатом:Rust работает внутри VS Code с терминалом MSYS

Этот вопрос старый, но за это время многое изменилось.

Самый простой способ установки в Windows - перейти на страницу установки Rust, скачать и запустить rustup-init.exe. Устанавливает rustc, rustup и подобные инструменты. Это просто работает ™.

Другие вопросы по тегам