Не компилируется Rust на Windows? Решаем проблему с linker link.exe

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Введение: Ваш первый "Hello, world!" на Rust, который не хочет работать

Вы только что установили Rust, открыли терминал, написали свой первый код на этом элегантном и безопасном языке, ввели cargo run — и тут же получили сбивающую с толку красную строку:

error: linker `link.exe` not found
  |
  = note: The system cannot find the file specified. (os error 2)

Знакомо? Не паникуйте! Вы столкнулись с одной из самых популярных проблем среди новичков, переходящих на Rust с Windows. Эта ошибка — не баг компилятора и не проклятье. Это просто недопонимание между вашим новым другом Rust и операционной системой. Тысячи разработчиков прошли через это на Stack Overflow, и сегодня мы разберем эту ситуацию раз и навсегда. Добро пожаловать в мир системного программирования на Windows — здесь нужно немного больше, чем просто установить язык.

Почему Rust не видит link.exe? Разбираемся в корне проблемы

Чтобы понять, почему возникает ошибка linker link.exe not found, нужно заглянуть под капот процесса компиляции. Когда вы пишете rustc main.rs или cargo build, Rust компилирует ваш код в объектные файлы. Но на этом всё не заканчивается. Чтобы получить готовый исполняемый файл (.exe), эти объектные файлы нужно связать (link) вместе. Эту работу выполняет специальная программа — линкер.

На Windows линкер по умолчанию — это link.exe из набора инструментов Microsoft Visual C++ (MSVC). Rust, будучи языком, который "дружит" с системным компилятором, по умолчанию выбирает MSVC-тулчейн (если вы не указали иное при установке). Проблема в том, что этот линкер не является частью Windows. Он поставляется вместе с Visual Studio или отдельным пакетом Build Tools for Visual Studio.

Ключевой момент: Rust не может найти link.exe, потому что он просто не установлен на вашем компьютере, либо не добавлен в системную переменную окружения PATH.

Краткий чек-лист: что могло пойти не так?

  • Вы установили Rust через rustup-init.exe и нажали "Enter" везде. Это нормально, но установщик не ставит Visual Studio.
  • У вас установлена Visual Studio Code или другая IDE, но не Visual Studio. Это не одно и то же.
  • Вы выбрали GNU тулчейн при установке. Если да, то вам нужен не MSVC, а GCC (например, через MinGW). Но сегодня мы говорим про стандартный MSVC.

Решение №1: Установка Visual Studio Build Tools (Рекомендуемый способ)

Это самый правильный и "родной" способ для Windows. Microsoft предлагает бесплатный пакет, который включает в себя только компилятор и линкер — без громоздкой IDE.

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

После этого откройте новый терминал и снова попробуйте скомпилировать ваш проект:

cargo new hello_world
cd hello_world
cargo run

Если всё прошло успешно, вы увидите заветное "Hello, world!".

Решение №2: Использование GNU-тулчейна (Альтернатива)

Если вы не хотите устанавливать гигабайты инструментов от Microsoft, есть другой путь — использовать GNU-тулчейн. Он не требует Visual Studio, но вам понадобится установить GCC через MSYS2 или MinGW-w64.

Важно: Этот способ подходит, если вы уже знаете, что делаете, или если ваш проект не использует библиотеки, завязанные на MSVC. Для новичков я рекомендую первый способ.

Шаги для смены тулчейна:

  • Установите MSYS2 (скачайте с официального сайта).
  • В терминале MSYS2 установите базовый набор инструментов: pacman -S mingw-w64-x86_64-gcc.
  • Добавьте папку C:\msys64\mingw64\bin в системную переменную PATH.
  • Теперь смените тулчейн Rust: rustup default stable-gnu.

После этого cargo run будет использовать gcc.exe в качестве линкера, а не link.exe.

Решение №3: Ручная настройка переменной окружения (Быстрый фикс)

Бывает, что Visual Studio установлена, но link.exe всё равно не найден. Это значит, что его путь не прописан в PATH. Обычно он находится в папке, похожей на:

C:\Program Files\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.3x.xxxxx\bin\Hostx64\x64

Если вы установили полную Visual Studio, путь может быть:

C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.3x.xxxxx\bin\Hostx64\x64

Чтобы это исправить:

  1. Нажмите Win + R, введите sysdm.cpl → вкладка "Дополнительно" → "Переменные среды".
  2. В разделе "Системные переменные" найдите Path, нажмите "Изменить".
  3. Добавьте путь к папке, где лежит link.exe.
  4. Перезапустите терминал.

Этот метод — временное решение. Лучше использовать Developer Command Prompt (иконка в меню Пуск), который автоматически настраивает все переменные.

Почему это происходит именно на Windows? Сравнение с Linux/macOS

На Linux

Блоги

Рекомендаций по книгам