Difference between revisions of "Cross compiling/ru"

From Lazarus wiki
Jump to navigationJump to search
m
Line 30: Line 30:
 
На примере ubuntu 12.10 (13.04) ([http://softlabpro.blogspot.ru/2013/02/how-to-setup-codetyphon-for-cross.html источник])
 
На примере ubuntu 12.10 (13.04) ([http://softlabpro.blogspot.ru/2013/02/how-to-setup-codetyphon-for-cross.html источник])
  
1. Установите последнюю CodeTyphon почтовый пакет из
+
1. УСкачайте последнюю версию CodeTyphon
  
 
http://www.pilotlogic.com/
 
http://www.pilotlogic.com/

Revision as of 21:19, 4 February 2014

Template:Translate=Предисловие= Это краткое введение для новичков. В следующих разделах описывается, как настроить систему для кросс компиляции, что означает создание бинарных файлов (исполняемых файлов) для различных платформ, которые используются для компиляции - например, работающие под Linux и создание исполняемых файлов Win32 (или FreeBSD, Darvin, и т.д.). В этом случае платформа, используемая для компиляции, как правило называется "хост" (Linux в примере выше), и платформа, на которой вы хотите создавать файлы ваша "цель". FreePascal является компилятором и в основном преобразует исходники в исполняемые файлы (машинный язык). Эти файлы содержат информацию о том, как операционная система начинает исполнять файлы. Кроме того, бинарные файлы обращаются к API, предоставляемые конкретной операционной системой, поэтому различные реализации нашей Run-time библиотеки необходимы для различных операционных систем. Поэтому эти двоичные файлы специфичны для разных платформ. FreePascal сам по себе не нуждается в длительной настройке. Он может создавать исполняемые файлы для многих платформ. Просто скажите ему сделать это.

Хост и цель на том же процессоре

FPC устроен так, что распределенный компилятор может создать машинный код для определенного процессора (потому что разные процессоры нуждаются в различном машинном коде), и он знает конкретные требования для всех поддерживаемых платформ (операционных систем), доступных на данном процессоре. Это означает, что вы можете выполнять кросс-компиляции с тем же компилятором, используемым для собственной компиляции до тех пор, пока Вы придерживаетесь того же процессора.

Хост и цель на разных процессорах

Если вам нужно создать двоичные файлы для различных процессоров, вам нужен специальный кросс-компилятор, то есть компилятор работающий на хост платформе, но который в состоянии создать машинный код для различных процессоров (в случае FPC, например кросс-компилятор должен быть способен работать для всех поддерживаемых платформах доступных на _target_ CPU). Это кросс-компилятор обычно хранится в том же каталоге, что и родной компилятор. Такой кросс-компилятор может быть либо собран вами вручную, или Вы можете использовать готовый распространяемый кросс-компилятор предоставленный для некоторых платформ непосредственно FPC командой (обычно платформы в основном используемые в портативных устройствах, такие как arm-linux или arm-wince, потому что они обычно не используются в качестве хост-платформ). Fpc бинарник может выбрать нужный компилятор (как родной компилятор или кросс-компилятор) для целевого процессора выбирается с помощью параметра-P.

Ассемблер и компоновщик

Компилятор это только одна часть. Нам также необходимо ассемблер и компоновщик. FPC обеспечивает встроенный ассемблере и/или линкер только для некоторых платформ, другие платформы должны использовать внешние инструменты для этого. И эти средства, как правило, не в состоянии создать двоичные файлы для различных платформ. Вот почему мы должны различать специальный компоновщик 'ld' и ассемблер 'as' для каждой целевой платформы. Это binutils.

Модули для целевой платформы

После создания (или имеющихся/установленных) кросс инструментов, нужно скомпилировать FPC RTL и другие модули для выбранной целевой платформы. Например, каждая целевая платформа требует другой файл system.ppu (системный модуль), и т.д. Эти модули могут быть либо скомпилированы с помощью компилятора созданным для компиляции под целевую платформу, либо вы можете потенциально использовать официально распространяемые модули скомпилированные (и распространяемые) с точно такой же версией FPC (если имеются в полезном формате под конкретную хост-платформу).

Конфигурация

Когда ваш FPC конфигурационный файл будет подготовлен, кросс-компиляция станет настолько простой, что вы сможете забыть все эти скучные детали. То же самое должно быть сделано для LCL - библиотеки компонентов Lazarus (при её использовании). И после этого вы можете кросс-компилировать программы на Паскале на разные целевой платформы. В результате файлы могут быть скопированы на машину под управлением целевой платформы, или работать под эмулятором (например, Wine для Win32 файлов под Linux, и т.д.).

Основные шаги

Есть несколько общих этапов кросс-компилляции, которые вы должны сделать в каждом конкретном случае:

  1. Уже имеющийся FreePascal компилятор для платформы для которой вы хотите скомпилировать.
  2. Вы должны иметь исходный код FreePascal (за исключением частного случая если все уже подготовлено кем-то другим).
  3. Вы должны либо сделать билд из исходников или получить бинарные файлы кросскомпиллятора cross-Binutils, которые работают на платформе на которой вы находитесь, и предназначены для сборки программ для желаемой целевой платформы.
  4. Иногда вам будут нужны некоторые файлы из целевой платформы для которой вы компилируете код.

Быстрый способ настройки иомпиляции из под Linux для Windows

Существует сборка Lazarus, содержащая в себе большое количество предустановленных элементов (в том числе и необходимых для кросскомпиляции). Зовётся она CodeTyphon Далее описан способ установки и настройки среды программирования, автоматически компиллирующую под win32/win64/linux (на выбор). При запуске программа будет открывать свежие сборки в wine.

Установка CodeTyphon

На примере ubuntu 12.10 (13.04) (источник)

1. УСкачайте последнюю версию CodeTyphon

http://www.pilotlogic.com/

2. Распакуйте архив в папку, например:

/home/ct

3. Войдите в эту папку (команда cd и путь к папке) из терминала с привилегиями суперпользователя и начать

   ./install.sh

(Или запретный способ через GUI: в свойствах файла поставить галку, разрешающую запуск в качестве приложения)


4. Только при первой установке CodeTyphon в вашем компьютере, выберите опцию

   (3) "Install System Libraries" (примерно 10 минут)

для Ubuntu 12.10, Вы должны будете вручную добавить эти пакеты (второй может и отсутствовать)
           sudo apt-get install binutils-dev devel-essential


5. После установки системных библиотек запустите снова "Install.sh" и выберите опцию

   (0) "Install CodeTyphon Studio"

6. После операции копирования, выберите опцию


    (8) "Remove and Build All" (примерно 15 минут)


Установка кросскомпилятора

1. После всех действий у вас установлен в Dash CodeTyphon Студия (именно утилита для настройки компонентов Typhon ака Lazarus), запустите его и выберите:

Cross-Build (в меню приложения сверху) и выберите нужную платформу среди компилляторов


2. Затем Вы должны запустить Лазаря (у меня он зовётся Typhon32) и выбрать необходимый FPC (сервис-параметры-окружение-путь компилятора (fpc)), например:

   /usr/lib/codetyphon/fpc/bin/(название папки зависит от вашей системы)/ppcx64 (for Linux64)
   /usr/lib/codetyphon/fpc/bin/(название папки зависит от вашей системы)/ppcross386 (for Win32)
   /usr/lib/codetyphon/fpc/bin/(название папки зависит от вашей системы)/ppcrossx64 (for Win64)

Настройка проекта и запуска в wine

1. Сервис-параметры-отладчик-тип отладчика и путь

Ставим тип отладчика (none)

2. Не забудьте выбрать меню проект-параметры проекта-параметры компилятора-настройка и целевая платформа-целевая платформа-операционная система (-Т):

   Linux
   Win32
   Win64

3. В меню по пути запуск-параметры сборки+запуска-запуск-команда запуска заменяем

wine $(EdFile)


Собственно всё готово! Единственное требование: программыдолжны храниться на диске вайна (/home/(имя-пользователя)/.wine/drive_с)

Собственно всё должно работать. Дополнительно можно настроить:

  • уменьшение размера выходных файлов (убрать отладочную информацию и прочее)
  • добавление графической библиотеки для windows