Попытка перенести библиотеку 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, почти сразу возникают ошибки.

6
Seva Alekseyev 29 Авг 2012 в 19:40

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 с нуля, в общем, противоположно общеприменимому.

3
Seva Alekseyev 12 Фев 2014 в 01:00
Идею JVM можно было бы немного усовершенствовать, поскольку Android не запускает JVM. Вы создаете код для использования в конвертере байт-кода из java в dalvik для Android? Или вы добавляете стороннюю JVM в Android (возможно, но необычно)?
 – 
Chris Stratton
6 Дек 2013 в 20:32
Free Pascal может компилироваться в байт-код Java (как файлы .class), который можно передать в систему сборки Android в качестве библиотеки зависимостей. Подробности здесь. Мой камень преткновения здесь.
 – 
Seva Alekseyev
6 Дек 2013 в 20:58