We detected you are likely not from a Russian-speaking region. Would you like to switch to the international version of the site?

  Назад к списку статей

Оптимизация производительности Termux для задач компиляции

Termux превратил Android‑устройства в полноценные Linux‑окружения. Однако при работе с тяжёлыми задачами компиляции (C/C++, Rust, Go) часто возникает ощущение, что ресурсы ограничены. В этой статье мы разберём, как настроить Termux так, чтобы собрать крупные проекты быстрее и стабильнее.

1. Базовая подготовка среды

Перед тем как задумываться об оптимизации, убедитесь, что система полностью обновлена и установлены необходимые инструменты сборки.

pkg update && pkg upgrade -y
pkg install -y build-essential clang cmake git python python-dev
pkg install -y make autoconf automake libtool

Пакет build-essential включает gcc, g++ и make, а clang часто работает быстрее на ARM‑процессорах.

2. Использование всех ядер процессора

Большинство сборочных систем поддерживают параллельный запуск задач. Для make используйте опцию -j с числом, равным количеству доступных ядер.

# Узнать количество ядер
nproc=$(nproc)
# Запуск сборки
make -j$(nproc)

Если проект использует ninja, аналогичная команда выглядит так:

ninja -j$(nproc)

3. Кеширование компиляций с ccache

Инструмент ccache хранит результаты предыдущих компиляций и позволяет повторно использовать их при неизменных исходных файлах.

pkg install -y ccache
# Добавляем путь к ccache в переменную окружения
export PATH="$HOME/.local/bin:$PATH"
export CC='ccache gcc'
export CXX='ccache g++'
# Проверьте статистику
ccache -s

Для проектов, собираемых через cmake, укажите компиляторы в командной строке:

cmake -DCMAKE_C_COMPILER=ccache\ gcc -DCMAKE_CXX_COMPILER=ccache\ g++ ..

4. Управление оперативной памятью и swap

На мобильных устройствах RAM часто ограничена. Добавление swap‑файла помогает избежать «out of memory» во время больших сборок.

# Создаём swap‑файл 512 МБ
dd if=/dev/zero of=$HOME/swapfile bs=1M count=512
chmod 600 $HOME/swapfile
mkswap $HOME/swapfile
swapon $HOME/swapfile
# Проверка
free -h

Не забывайте отключать swap после завершения работы, чтобы не изнашивать флеш‑память:

swapoff $HOME/swapfile
rm $HOME/swapfile

5. Использование внешних накопителей

Сборка в каталоге на внутренней памяти может быть медленной из‑за ограниченной скорости eMMC. Переместите проект на SD‑карту или USB‑накопитель (OTG).

# Предварительно разрешите доступ к внешнему хранилищу
termux-setup-storage
# Смонтировать SD‑карту (пример пути) и перейти в неё
cd /storage/XXXX-XXXX/termux_projects/myproject

Обратите внимание, что файловая система FAT32/exFAT не поддерживает права доступа, поэтому для проектов, требующих символических ссылок, лучше использовать ext4 на отдельном образе.

6. Профилирование и диагностика узких мест

Инструменты perf и strace работают в Termux и позволяют понять, где именно «тормозит» сборка.

pkg install -y perf strace
# Пример профилирования make
perf stat -d make -j$(nproc)
# Отслеживание системных вызовов
strace -c make

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

7. Автоматизация с помощью скриптов и wake‑lock

Чтобы сборка не прерывалась при переходе устройства в спящий режим, используйте termux-wake-lock:

# В начале скрипта
termux-wake-lock
# Ваши команды сборки
make -j$(nproc)
# По завершении
termux-wake-unlock

Сохраните скрипт в ~/bin/build.sh и сделайте исполняемым: chmod +x ~/bin/build.sh.

8. Пример полного «пакетного» скрипта

#!/data/data/com.termux/files/usr/bin/bash

# Обновление пакетов
pkg update && pkg upgrade -y

# Установка необходимых инструментов (если ещё не установлены)
pkg install -y build-essential clang cmake git ccache make ninja termux-api

# Настройка ccache
export CC='ccache gcc'
export CXX='ccache g++'
ccache -M 5G   # Установить лимит кэша 5 ГБ

# Создание и активация swap (512 МБ)
if [ ! -f $HOME/swapfile ]; then
  dd if=/dev/zero of=$HOME/swapfile bs=1M count=512
  chmod 600 $HOME/swapfile
  mkswap $HOME/swapfile
fi
swapon $HOME/swapfile

# Не дать устройству спать
termux-wake-lock

# Переходим в директорию проекта (пример)
cd $HOME/termux_projects/myproject

# Сборка
mkdir -p build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j$(nproc)

# Отключаем wake‑lock и swap
termux-wake-unlock
swapoff $HOME/swapfile
rm $HOME/swapfile

Запуск такого скрипта позволит собрать проект «из коробки», используя все доступные оптимизации.

Заключение

Оптимизация Termux для компиляции — это сочетание правильного выбора инструментов, эффективного использования ресурсов процессора и памяти, а также автоматизации повторяющихся действий. Применяя описанные приёмы, вы сможете собрать крупные проекты в несколько раз быстрее, не рискуя перегрузить устройство.

Если вам требуется более глубокая настройка окружения, разработка кастомных скриптов или консультация по миграции проектов в Android‑среду, команда RybinskLab готова помочь. Мы предоставляем услуги по оптимизации сборочных систем, настройке CI/CD в Termux и обучению персонала. Свяжитесь с нами, чтобы вывести ваш мобильный рабочий процесс на новый уровень.

* Текст статьи подготовлен и структурирован с использованием технологий искусственного интеллекта. Проверен экспертом RybinskLab.

Поделиться знанием:

Нужна профессиональная помощь?

Меня зовут Усачёв Денис Евгеньевич. Я оказываю IT-услуги в Рыбинске и Ярославской области: настройка серверов, безопасность, автоматизация бизнеса.

Связаться со мной
Поддержать проект