Сегодня, в этой небольшой статье я покажу вам нечто: как можно компилировать программы на D прямо на своем смартфоне под управлением операционной системы Android.
Внимание: все то, будет описано далее, было с успехом проведено на моем мобильном устройстве Xiaomi Redmi 4A (наличие доступа root не является необходимым и даже может быть опасным!), соответственно, повторяя описанное, вы и только вы сами отвечаете за получившийся результат — все делается на ваш страх и риск!
Однако, в ходе эксперимента ни один телефон не пострадал…
В этой статье, я немного расскажу о том, что можно сделать, если хочется писать на D, а компьютера по каким-то причинам под рукой не оказалось. Путь, который я могу предложить не включает в себя использование каких-либо онлайн-компиляторов языка программирования D или удаленного доступа с мобильного телефона к рабочему компьютеру, а предлагает совершенно иной вариант…
Все что потребуется: наличие установленного Google Play (не удивляйтесь, не во всех прошивках с Android он есть), доступ в интернет (чуть позже поймете зачем), некоторые базовые познания относительно работы с командной строкой Linux и хорошо сконфигурированные руки, а также желание и не побоюсь сказать — некоторое упорство.
Первое, что надо сделать, это установить приложение Termux из Google Play:
Termux — это эмулятор терминала командной строки с некоторыми приятными особенностями: внутри него есть ряд полезных команд (это обычные команды терминала Linux) и, что самое важное, собственный пакетный менеджер pkg. Данный пакетный менеджер представляет собой урезанную версию классического пакетного менеджера apt и понимает практически те же команды, обеспечивая доступ к десяткам пакетов с самым разным программным обеспечением.
Выглядит Termux примерно так:
Но, относительно недавно в репозиторий Termux добавили пакет с одним широко известным компилятором LDC и именно его можно беспрепятственно установить воспользовавшись командой:
pkg install ldc
После выполнения команды будет выведено предложение скачать и установить файлы компилятора, на которое нужно ответить вводом буквы Y и нажатием Enter:
В принципе, на этом вся установка завершена и в наших руках теперь есть полноценный функциональный компилятор D.
Проведем небольшое испытание, установим перед этим систему контроля версий git:
Ради эксперимента соберем последнюю версию одного из наших опытов по созданию интерпретатора языка программирования FALSE, взяв последнюю версию кода из моего репозитория на GitHub. Для этого вводим следующую последовательность команд:
git clone https://github.com/aquaratixc/flow.git cd flow/source
А теперь самое жесткое: необходимо вручную прописать команду сборки, так как dub не установлен, а попытка его сборки с помощью LDC кончилась полным провалом. Сама команда сборки довольно простая, но чтобы ее набрать требуется некоторое терпение или уже готовый скрипт, который я даже и не знаю, на чем писать…
Именно поэтому пришлось делать ручную сборку:
ldmd2 app.d core/extended.d core/interpreter.d core/repl.d utils/messages.d utils/stack.d -J/data/sata/com.termux/files/home/flow/source/views -of flow
Сама команда в Termux выглядит довольно страшно:
А вот и результат запуска исполняемого файла проекта:
Точно также выглядит flow (интерпретатор диалекта языка программирования FALSE) выглядит и на обычном компьютере, что приводит к мысли о том, что перед нами действительно мощный инструмент, который работает на обычном смартфоне. Компилятор LDC, который был успешно установлен, работает как стандартный компилятор DMD, при условии использования для его вызова команды ldmd2 (обертка для LDC, которая мимикрирует под референсный компилятор) и позволяет использовать всю стандартную библиотеку. Это открывает новые возможности для работы с D прямо на мобильных устройствах, однако, применять этот инструмент несколько тяжело в виду нескольких нерешенных проблем: отсутствие инструмента сборки dub, автоматизирующего рутинные операции, и отсутствие хотя бы минимально удобного редактора в консольной среде Termux.
Надеюсь, статья была полезной и занимательной, и если вдруг вам удастся найти способы обхода вышеупомянутых ограничений Termux, то не стесняйтесь — пишите нам, быть может именно вы будете упомянуты в соавторах к этой статье 🙂
Кстати у меня dub работает, он похоже с компилятором поставился, поскольку отдельным пакетом его там нет.могу даже скрин в ВК кинуть 🙂
А вот за это отдельное спасибо!
А то совсем времени нет, так может хоть сидя в маршрутке продолжу изучение.
Кстати, вполне можно использовать vim, установленный в том же Termux.
«q» на экранной клавиатуре с зажатой громкостью вверх, включает и отключает доп секцию с ESC,TAB, стрелками и другими навигационными клавишами.
Компиляция «:!ldmd2 %» выполнение соответственно «!./имя_файла», хотя надо покопаться в ключах запуска возможно есть сразу выполнение, или что-то типа rdmd