Попытка перенести библиотеку Delphi на Android. Free Pascal поддерживает Android / ARM - доступен готовый компилятор для Windows. Однако Android NDK теперь поддерживает MIPS и x86. Каков статус поддержки тех, кто пользуется FPC? На данный момент мой проект более или менее не зависит от ЦП - собственные биты созданы для всех четырех поддерживаемых архитектур. Не хочу отказываться от этого.
Я не после полного цикла разработки Android на Паскале - просто библиотека алгоритмов, которая не выполняет операций ввода-вывода. Пытался перевести на C с помощью p2c, но переводчик давится исходниками.
Должен ли я просто попробовать собрать кросс-компилятор для соответствующего процессора с Linux, а затем связать его с библиотеками NDK?
РЕДАКТИРОВАТЬ: Я построил кросс-компилятор для Intel / Linux из исходников ветки Android. Это работает, за исключением того, что для компиляции нужно вызывать ppcross386
, а не fpc
. Последний, похоже, игнорирует параметр -Tlinux и вызывает компилятор Intel / Win32.
EDIT2: с небольшими изменениями в make-файле и исходниках кросс-компилятор MIPS строится. Однако по мере того, как сборка переходит на кросс-CPU RTL, почти сразу возникают ошибки.
1 ответ
EDIT, наконец: поддержка цели компиляции Android / MIPSEL доступна в магистрали FPC. Экспортируйте последнюю версию, соберите кросс-компилятор и оставьте код.
Хотя поддержку MIPS ISA можно найти кое-где в источниках FP, официально это еще не сделано. Жду релиза 2.7.
Тем временем в магистрали есть поддержка компиляции в байт-код Java, она задокументирована в FP wiki. Может быть, я смогу использовать это в качестве временной меры ...
РЕДАКТИРОВАТЬ: Free Pascal поверх JVM в целом работает на Android, но его правила несколько отличаются от обычного Паскаля. В противном случае правильный Паскаль выйдет из строя при компиляции в JVM. Так что он непригоден для переноса больших объемов устаревшего кода Pascal, который изначально был написан без JVM.
РЕДАКТИРОВАТЬ: мой проект FPC работает на MIPS / Android, но мой рецепт не подходит для общего потребления, потому что объем использования Pascal RTL в моем проекте очень ограничен. Он включает кросс-компиляцию из Pascal в сборку MIPS (предназначенную для MIPSEL / Linux, доступную в магистрали FPC), а затем подачу сгенерированных источников сборки в систему сборки NDK, обеспечивая вместе с C / сборкой повторную реализацию ограниченного подмножества Pascal RTL.
Весь корпус Pascal RTL большой и пугающий. Мое решение, которое включает в себя повторную реализацию Pascal RTL на C с нуля, в общем, противоположно общеприменимому.
Похожие вопросы
Связанные вопросы
Новые вопросы
android
Android — это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфонов, планшетов, автомобилей, телевизоров, одежды, очков, IoT). Для тем, связанных с Android, используйте теги, специфичные для Android, такие как android-intent, android-activity, android-adapter и т. д. Для вопросов, отличных от разработки или программирования, но связанных с Android framework, используйте эту ссылку: https://android .stackexchange.com.