Компилятор C для Android: как писать и запускать программы на смартфоне

Ошибка clang: command not found в свежеустановленном Termux — самая частая причина, по которой у пользователя не запускается компилятор C на Android: пакетный менеджер требует сначала обновить репозитории и установить нужный пакет вручную. Проблема решается двумя командами, но важно понимать, какой вообще инструмент подходит под вашу задачу — вариантов несколько, и различаются они существенно.

Android не содержит встроенного компилятора C, поэтому код пишут и собирают либо через специализированные приложения с готовой средой, либо через эмулятор терминала с пакетами GCC или Clang. Ниже — разбор рабочих вариантов, их ограничений и порядок настройки без лишних экспериментов.

Какие компиляторы C доступны на Android

Выбор сводится к трём основным подходам. Первый — Termux, эмулятор терминала с полноценным окружением Linux и доступом к Clang и GCC через собственный репозиторий пакетов. Это самый гибкий вариант, близкий к настольной разработке.

Второй подход — приложения «всё в одном» вроде Cxxdroid и C4droid. Они включают редактор кода, компилятор и кнопку запуска в одном интерфейсе, что удобно для обучения и быстрых проверок. Третий вариант — онлайн-компиляторы в браузере, которые не требуют установки, но зависят от интернета и ограничены по времени выполнения.

  • 📱 Termux — терминал с Clang/GCC, максимум контроля, нужна работа с командной строкой
  • 🧩 Cxxdroid — IDE с компилятором C/C++, подсветка синтаксиса, запуск в один тап
  • 🛠️ C4droid — классическая IDE с поддержкой C и C++, часть функций платная
  • 🌐 Онлайн-компиляторы — ничего устанавливать не нужно, но код выполняется на удалённом сервере

Termux: полноценный Clang и GCC в терминале

Termux устанавливается из F-Droid — именно эту сборку поддерживают разработчики; версия в Google Play давно не обновлялась, и в ней репозитории пакетов могут не работать. После установки откройте приложение и обновите списки пакетов, затем поставьте компилятор.

pkg update && pkg upgrade

pkg install clang

Проверить установку можно командой clang --version. Если вместо версии снова появляется command not found, убедитесь, что обновление завершилось без ошибок и команда введена без опечаток. Пакет gcc в Termux фактически является обёрткой над Clang, поэтому для большинства задач достаточно одного компилятора.

⚠️ Внимание: не скачивайте Termux из сторонних сайтов и не используйте устаревшую сборку из Google Play — устаревшие репозитории приводят к ошибкам при установке пакетов, которые сложно диагностировать новичку.

Компиляция и запуск простой программы выглядят так. Создайте файл любым редактором (например, встроенным nano), затем соберите и запустите бинарник:

nano hello.c

clang hello.c -o hello

./hello

☑️ Первый запуск C-программы в Termux

Выполнено: 0 / 5

Cxxdroid и C4droid: среда разработки без командной строки

Если терминал не нужен, проще поставить IDE. Cxxdroid ориентирован на C и C++: в нём есть автодополнение, подсветка ошибок до компиляции и запуск программы одной кнопкой. Для учебных задач и небольших программ этого достаточно, а работа с файлами происходит в привычной папочной структуре.

C4droid существует дольше и поддерживает как C, так и C++, часть расширенных возможностей доступна за отдельную плату. Перед покупкой проверьте бесплатные функции: базовая компиляция и запуск обычно доступны без оплаты.

📊 Чем вы компилируете C-код на Android?
Termux с Clang/GCC
Cxxdroid
C4droid
Онлайн-компилятор в браузере

Сравнение вариантов

Таблица ниже помогает выбрать инструмент под конкретную задачу. Учтите, что возможности приложений меняются от версии к версии — актуальный список функций проверяйте на странице приложения.

ИнструментКомпиляторРабота офлайнПорог входа
TermuxClang / GCCДаСредний — нужна командная строка
CxxdroidВстроенный GCCДаНизкий
C4droidВстроенный GCCДаНизкий
Онлайн-компиляторыНа стороне сервераНетМинимальный

Ограничения компиляции на Android

Скомпилированный на смартфоне бинарник — это не APK-приложение. Он запускается только внутри среды, в которой был собран: программа из Termux работает в Termux, а не как самостоятельное приложение с иконкой. Чтобы получить полноценное Android-приложение с нативным кодом, потребуется Android NDK и сборка на ПК — на самом смартфоне этот процесс практически не применяется.

Ещё одно ограничение — доступ к файлам: начиная с современных версий Android, приложения работают в изолированном хранилище, поэтому программа «видит» только разрешённые каталоги. В Termux для доступа к общему хранилищу используется команда termux-setup-storage, после которой появляется каталог ~/storage. В IDE-приложениях доступ к файлам запрашивается через системное разрешение.

⚠️ Внимание: не выдавайте приложениям-компиляторам доступ ко всем файлам без необходимости. Достаточно разрешения на конкретную папку с исходниками — это снижает риск случайного удаления или утечки данных.

Также учитывайте производительность: сборка крупных проектов на смартфоне заметно медленнее, чем на ПК, и активно расходует заряд батареи. Для учебных программ и небольших утилит это не критично, но полноценную кросс-компиляцию больших проектов разумнее выполнять на компьютере.

Почему программа из Termux не запускается вне Termux

Бинарник собран под окружение Termux и использует его библиотеки и пути. Вне терминала система не находит нужные зависимости. Для запуска вне Termux потребуется статическая сборка или упаковка кода в APK через Android NDK на ПК.

Типичные ошибки и их решение

Чаще всего пользователи сталкиваются с тремя ситуациями. Первая — command not found после установки: обычно это следствие незавершённого обновления пакетов или устаревшей сборки Termux; повторите pkg update и переустановите пакет. Вторая — ошибка permission denied при запуске ./hello: проверьте, что файл находится в домашнем каталоге Termux, а не в общем хранилище, где исполнение файлов системой запрещено.

Третья группа проблем — ошибки самого компилятора: undefined reference, отсутствующие заголовки, синтаксические ошибки. Здесь помогает внимательное чтение сообщения: Clang указывает файл, строку и причину. Недостающие библиотеки в Termux ставятся тем же pkg install, например pkg install libmath-подобные пакеты ищутся через pkg search.

  • 🔍 command not found — обновите пакеты и переустановите компилятор
  • 🔒 permission denied — перенесите бинарник из общего хранилища в домашний каталог Termux
  • 📦 Не найдена библиотека — поищите пакет через pkg search имя
  • 🐢 Медленная сборка — закройте фоновые приложения и подключите зарядку

FAQ: частые вопросы

Можно ли скомпилированную на Android программу превратить в APK?

Напрямую — нет. Для создания APK с нативным C-кодом используется Android NDK, и полноценная сборка выполняется на ПК в Android Studio. На смартфоне такой процесс практически не применяется.

Что лучше для изучения языка C: Termux или Cxxdroid?

Для обучения удобнее Cxxdroid: редактор, компиляция и запуск в одном окне, без командной строки. Termux полезнее, если вы также хотите освоить работу в Linux-окружении.

Работает ли компилятор C на Android без интернета?

Да, после установки приложения и пакетов компиляция выполняется локально. Интернет нужен только для загрузки самого приложения и пакетов, а также для онлайн-компиляторов.

Почему Termux из Google Play выдаёт ошибки при установке пакетов?

Версия Termux в Google Play давно не обновляется, и её репозитории могут быть недоступны. Актуальная сборка распространяется через F-Droid — используйте именно её.

Можно ли компилировать C++ этими же инструментами?

Да. В Termux команда clang++ собирает C++-код, а Cxxdroid и C4droid изначально поддерживают оба языка — достаточно сохранить файл с расширением .cpp.