Avatar ·

Ошибка компиляции Rust в Windows: linker `link.exe` not found

Всем привет! Я только начал изучать Rust и решил написать свою первую программу "Hello, world!". Установил Rust через официальный установщик `rustup-init.exe`, всё прошло успешно. Создал новый проект через `cargo new hello_world`, перешёл в папку, и при попытке скомпилировать простейший код командой `cargo build` получаю ошибку: ``` error: linker `link.exe` not found | = note: программа не может быть запущена: "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\bin\Hostx64\x64\link.exe" = help: убедитесь, что пути к инструментам Visual Studio указаны в переменной PATH. ``` Вот мой код (файл `main.rs`): ```rust fn main() { println!("Hello, world!"); } ``` Я использую Windows 11, Rust установлен версии 1.76.0. Visual Studio Community 2022 у меня не установлена, я думал, что Rust сам содержит всё необходимое. Может, нужно что-то доустановить? Пробовал перезагружать компьютер — не помогло. Подскажите, как исправить эту ошибку? Заранее спасибо! <<>>

Причина ошибки и её решение

Ошибка linker `link.exe` not found возникает потому, что компилятор Rust (rustc) не может найти компоновщик (линкер) от Microsoft — link.exe. В отличие от Linux, где линкер ld обычно уже встроен в систему, в Windows для сборки нативных программ требуется набор инструментов Microsoft Visual Studio Build Tools или Visual Studio с компонентом "C++ инструменты".

Rust использует link.exe для связывания объектных файлов в исполняемый файл. Если Visual Studio не установлена, или если переменная окружения PATH не указывает на папку с link.exe, компиляция завершается этой ошибкой.

Шаг 1: Установка Visual Studio Build Tools

Самый простой и правильный способ — установить пакет Microsoft C++ Build Tools. Он занимает меньше места, чем полная Visual Studio.

  1. Перейдите на официальную страницу: Build Tools for Visual Studio 2022.
  2. Скачайте установщик vs_BuildTools.exe.
  3. Запустите установку. В мастере выберите рабочие нагрузки (Workloads).
  4. Отметьте пункт "Разработка классических приложений на C++" (Desktop development with C++). В правой панели убедитесь, что выбраны компоненты MSVC (например, MSVC v143) и Windows SDK.
  5. Нажмите "Установить". Процесс может занять 5–10 минут.

Шаг 2: Проверка установки и настройка окружения

После установки откройте Командную строку разработчика (Developer Command Prompt) или PowerShell для разработчиков (Developer PowerShell) — они появятся в меню "Пуск" после установки Build Tools. В этом терминале уже настроены все пути к компилятору и линкеру.

Выполните команду проверки:

where link.exe

Если отобразится путь вида C:\Program Files\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.38.33130\bin\Hostx64\x64\link.exe — всё в порядке.

Теперь попробуйте снова скомпилировать ваш проект:

cd C:\путь\к\вашему\проекту\hello_world
cargo build

Сборка должна пройти успешно. Если вы используете обычную командную строку (cmd) или PowerShell (не для разработчика), переменные окружения могут быть не установлены. В этом случае можно запустить rustup вручную, указав архитектуру:

rustup default stable-x86_64-pc-windows-msvc

Но лучше всего всегда работать в терминале разработчика, чтобы избежать подобных проблем.

Альтернативный вариант: установка через winget

Если вы предпочитаете автоматизированную установку, можно использовать менеджер пакетов winget (встроен в Windows 10/11):

winget install Microsoft.VisualStudio.2022.BuildTools --override "--passive --wait --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended"

После завершения установки перезапустите терминал и выполните cargo build.

Важное замечание

Если вы не планируете писать на C++, но хотите минимальную установку, можно выбрать только компонент MSVC v143 и Windows 10/11 SDK без полной рабочей нагрузки. Однако для новичков проще установить полный набор "Разработка на C++", чтобы гарантированно иметь всё необходимое.

<<>>

Решение через установку Rust GNU toolchain

Если по каким-то причинам вы не хотите устанавливать Visual Studio или Build Tools (например, на медленном интернете или ограниченном диске), можно переключить Rust на использование альтернативного линкера — GNU toolchain. Он использует ld из MinGW, который не требует Visual Studio.

Для этого выполните в терминале:

rustup default stable-x86_64-pc-windows-gnu

После этого Rust будет использовать линкер из набора MinGW. Однако вам всё равно потребуется установить MinGW-w64 (например, через MSYS2) или через менеджер пакетов winget:

winget install MSYS2.MSYS2

После установки MSYS2 откройте его терминал и выполните:

pacman -S mingw-w64-x86_64-gcc

Затем добавьте путь к папке bin MinGW в переменную PATH (обычно это C:\msys64\mingw64\bin). Перезапустите терминал и попробуйте cargo build.

Недостатки этого подхода:

  • Производительность скомпилированных программ может быть немного ниже, чем при использовании MSVC.
  • Некоторые крейты (библиотеки) могут иметь проблемы совместимости с GNU toolchain на Windows.
  • Требуется дополнительная настройка окружения.

Поэтому для новичков рекомендуется первый вариант с Visual Studio Build Tools — он наиболее стабилен и поддерживается официально.