Android/ru

From Free Pascal wiki
Jump to navigationJump to search

English (en) español (es) français (fr) polski (pl) русский (ru)

Здесь рассматривается процесс установки и настройки Free Pascal компилятора, для компиляции программ под Андройд-систему. Разработка программ для Андройд с использование Лазаруса, а так же компентны для Андройд системы рассматриваеются в других статьях.

Андройд платформы

Поддержка Андройд платформы официально добавленна начиная с версии FPC 3.0.

Поддерживаемые CPU:

ARM (CPU_TARGET=arm)

x86 (CPU_TARGET=i386)

MIPS (CPU_TARGET=mipsel)

ARM64 (CPU_TARGET=aarch64) (на лето 2016, доступен только в trunk)

JVM (не рассматривается на этой странице)

Android NDK

Независимо от того, устанавливаете ли вы FPC из официального дистрибутива, или компилируете из исходников, вам необходимо установить Android NDK. NDK требуется для сборки кросс-компилятора, а также RTL и FCL библиотек.

Скачайте NDK с этого сайта: http://developer.android.com/tools/sdk/ndk/index.html

После чего распакуйте в любую директорию.

Сборка кросскомпилятора из исходников

Получите последнюю версию исходников

Получите последнюю версию исходников из SVN репозитория.

Это можно сделать с помощью следующей командной строки

svn co http://svn.freepascal.org/svn/fpc/trunk fpcsrc

Процесс загрузки исходников может занять некоторое время. По-завершению исходники будут находится в директории "fpcsrc".

Сборка кросс-компилятора

На лето 2016 - для сборки fpc-trunk, необходима рабочая версия комплятора FPC 3.0.0. (Общее правило: trunk всегда должен собираться, последним официально выпущеной версией FPC компилятора. Официальная версия всегда доступна в дистрибутиве, и её установка и использование не должно вызывать проблем)

В качестве примера, исползуется сборка arm-android кросс-компилятора в Windows. Однако процесс сборки для других систем - идентичен. (Единственное что необходимо менять, это путь к файлам, а так же использование команды "sudo" при копировании комплиятора в системные папки для unix систем)

Сборка кросс-компилтяора для i386-android, mips-android происходит по аналогичной схеме.


Предположим, что используются следующие директории (папки)

  • Android NDK находится в C:\Program Files\Android SDK\android-ndk-r8d
  • Исходники FPC trunk находятся в C:\Develop\FPC\fpcsrc
  • Кросс-компилятор нужно установить в C:\Develop\FPC\pp

1. Добавьте в переменную-среды PATH пусть, где находится инструментарий из NDK. Для данного примера, это:

C:\Program Files\Android SDK\android-ndk-r8d\toolchains\arm-linux-androideabi-4.7\prebuilt\windows\bin


Заметка: "android-ndk-r8d" - это версия ndk. Этот суфикс меняется от выпуска к выпуску. Точно так же может меняться версия "arm-linux-androideabi-4.7". На лето 2016, на официальном сайте доступна вресия android-ndk-r11с, с версией androideabi-4.9. Соотвственно путь, при установке NDK в C:\Program Files\Android SDK\ будет: C:\Program Files\Android SDK\android-ndk-r11c\toolchains\arm-linux-androideabi-4.9\prebuilt\windows\bin. Обязательно проверяйте версию NDK которую вы используете, и изменяйте путь соответствующим образом. В дальнейшем пример будет использовать версию r8d.

2. Компиляция

2.1 Откройте командную строку и перейдите в папку с исходниками fpc:

 cd C:\Develop\FPC\fpcsrc

2.2 Запустите следующую команду:

 make clean crossall crossinstall OS_TARGET=android CPU_TARGET=arm INSTALL_PREFIX=C:\Develop\FPC\pp

Заметка: INSTALL_PREFIX - указывает пусть установки кросс-компилятора. Если он не указан, то установка произойдёт в путь, по-умолчанию. На unix-системах, это системная папка. Запись в неё, скорей всего, потребует прав супер пользователя, и должна быть использована команда sudo.

По завершению выполнения команды, собранный кросс-компилятор (а также RTL и FCL) будут установлены и доступны в C:\Develop\FPC\pp. По-умолчанию, компиляция происходит с:

  • -O2 оптимизацией.
  • включёном FPU эмуляторе (для ARM процессора)

Если нужны другие настройки компилятора, но их можно передать с помощью параметра CROSSOPT.

Например, если нужно собрать с поддержкой аппаратного FPU и поддержкой инструкций ARMv7a, следует использовать следующу команду:

  make clean crossall crossinstall OS_TARGET=android CPU_TARGET=arm CROSSOPT="-Cparmv7a -Cfvfpv3" INSTALL_PREFIX=C:\Develop\FPC\pp

3. Настройка

В папке, куда был установлен кросс-компилятор C:\Develop\FPC\pp\bin\i386-win32, был помещён файл конфигурации fpc.cfg. Его нужно отредактировать и добавить следующий текст

-FuC:\Develop\FPC\pp\units\$FPCTARGET\*
#ifdef android
#ifdef cpuarm
 -FlC:\Program Files\Android SDK\android-ndk-r8d\platforms\android-14\arch-arm\usr\lib
#endif
#ifdef cpu386
 -FlC:\Program Files\Android SDK\android-ndk-r8d\platforms\android-14\arch-x86\usr\lib
#endif
#endif

Параметр -Fl, указывает на стандартные системные библиотеки (например libc), от коротрых зависит RTL. Если этот параметр не указан в fpc.cfg, то необходимо будет передавать непосредственно при сборке проекта.

Заметка: android-14 - это версия Android системы. На лето 2016 года, уже доступна Android-24. Обязательно убедитесь, что вы передаёте путь именно той Android системы, для которой вы хотите скомпилировать проект.

Начиная с Android-21 доступены 64-битные архитектуры. Конфиуграционный файл для них будет выглядеть следующим образом.

#ifdef android
#ifdef cpuaarch64
 -FlC:\Program Files\Android SDK\android-ndk-r11c\platforms\android-21\arch-arm64\usr\lib
#endif
#ifdef cpux86_64
 -FlC:\Program Files\Android SDK\android-ndk-r11c\platforms\android-21\arch-x86_64\usr\lib
#endif
#endif

(arm64 именеются как aarch64 в FPC)