Введение: Ваш первый "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.
- Скачайте установщик: Перейдите на официальный сайт Microsoft и скачайте Build Tools for Visual Studio 2022. Ищите "Visual Studio 2022 Build Tools".
- Запустите установку: Запустите скачанный
vs_BuildTools.exe. - Выберите компоненты: В установщике выберите вкладку "Рабочие нагрузки" (Workloads). Отметьте галочкой пункт "Разработка классических приложений на C++" (Desktop development with C++).
- Установка: Нажмите кнопку "Установить" в правом нижнем углу. Процесс может занять 10-20 минут, так как загружается около 2-3 ГБ данных.
- Перезагрузка (опционально): После завершения установки перезагрузите компьютер, чтобы переменные окружения обновились.
После этого откройте новый терминал и снова попробуйте скомпилировать ваш проект:
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
Чтобы это исправить:
- Нажмите
Win + R, введитеsysdm.cpl→ вкладка "Дополнительно" → "Переменные среды". - В разделе "Системные переменные" найдите
Path, нажмите "Изменить". - Добавьте путь к папке, где лежит
link.exe. - Перезапустите терминал.
Этот метод — временное решение. Лучше использовать Developer Command Prompt (иконка в меню Пуск), который автоматически настраивает все переменные.
Почему это происходит именно на Windows? Сравнение с Linux/macOS
На Linux