Ошибка "linker 'cc' not found" в Rust на Debian под Windows 10: как исправить?
Причина ошибки и её решение
Ошибка linker 'cc' not found возникает, когда компилятор Rust (rustc) не может найти линковщик — программу, которая собирает объектные файлы в исполняемый бинарник. В Linux по умолчанию используется cc (символическая ссылка на GCC или Clang). В вашем случае, хотя вы установили GCC через sudo apt install gcc, возможно, пакет был установлен не полностью, или отсутствуют необходимые зависимости. Для Rust в Debian/Ubuntu рекомендуется устанавливать мета-пакет build-essential, который включает GCC, make и другие инструменты сборки.
Пошаговое решение
- Установите build-essential:
Этот пакет гарантированно установит GCC и создаст символьную ссылкуsudo apt update sudo apt install build-essential -ycc. - Проверьте установку:
Если командаwhich cc # Должно показать: /usr/bin/cc cc --version # Должна появиться информация о версии GCCccне найдена, проверьте, что пакет установлен корректно. - Проверьте переменную окружения CC:
Если переменнаяecho $CC # Если пусто — всё в порядке, rustc сам найдёт ccCCустановлена в неверное значение, сбросьте её:unset CC - Скомпилируйте ваш проект снова:
rustc main.rs ./main # Должно вывести: Hello, world!
Если ошибка осталась
Иногда проблема может быть в том, что rustc использует нестандартный линковщик. Вы можете явно указать путь к GCC:
rustc -C linker=gcc main.rs
Или для постоянного использования добавьте в файл ~/.cargo/config.toml:
[target.x86_64-unknown-linux-gnu]
linker = "gcc"
Дополнительная рекомендация
Если вы используете Cargo (рекомендуемый способ работы с Rust), ошибка может проявляться при cargo build. Решение то же самое — установите build-essential. Cargo автоматически найдёт линковщик после установки пакета.
Важно: В WSL (Windows Subsystem for Linux) убедитесь, что вы используете дистрибутив Debian (или Ubuntu) из Microsoft Store, а не какую-то стороннюю сборку. Иногда в WSL могут отсутствовать базовые пакеты, поэтому выполните полное обновление системы:
sudo apt update && sudo apt upgrade -y
После этого установка build-essential решит проблему в 99% случаев.
Альтернативный подход: установка Clang вместо GCC
Если по каким-то причинам установка build-essential не помогла или вы предпочитаете использовать Clang в качестве линковщика, выполните:
sudo apt install clang -y
После установки проверьте, что cc теперь указывает на Clang:
ls -la /usr/bin/cc
# Если ссылка отсутствует, создайте её вручную:
sudo ln -s /usr/bin/clang /usr/bin/cc
Затем попробуйте скомпилировать проект снова. Clang часто используется в Rust-сообществе из-за лучшей интеграции с LLVM (который лежит в основе rustc).
Ручная установка линковщика через rustup
Если системные пакеты не подходят (например, из-за ограничений WSL), можно установить линковщик через менеджер пакетов Rust:
rustup component add rust-src
cargo install cargo-binutils
rustup component add llvm-tools-preview
После этого используйте rust-lld как линковщик:
rustc -C linker=rust-lld main.rs
Этот способ полностью автономен и не требует системных пакетов, но может работать медленнее на больших проектах.
Ответов пока нет.
Войдите чтобы оставить ответ
Блоги