Пробую собрать кросскомпилятор.

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Пробую собрать кросскомпилятор.

Сообщение yantux » 26.01.2009 02:20:34

Код: Выделить всё
[root@localhost fpcbuild-2.2.2]# make NOGDB=1 CPU_TARGET=arm OS_TARGET=linux build
Makefile:129: *** Compiler ppcrossarm not found.  Останов.
[root@localhost fpcbuild-2.2.2]#   



Как решить эту проблему?
yantux
постоялец
 
Сообщения: 133
Зарегистрирован: 29.10.2007 16:02:33
Откуда: Санкт-Петербург

Re: Пробую собрать кросскомпилятор.

Сообщение haword » 26.01.2009 10:02:08

сначало собери кроскомпилятор, зайди в исходниках фрипаскаля в папку компиляторы там и make сделай
haword
постоялец
 
Сообщения: 301
Зарегистрирован: 02.03.2006 11:34:40

Re: Пробую собрать кросскомпилятор.

Сообщение Sergunoid » 26.02.2009 01:13:26

Всем привет.
Столкнулся с аналогичной проблемой и нахожусь в тупике - перепробовал много вариантов, по нескольку раз перечитал статьи.
Видимо просто небольшой ступор, бывает :D
Нужна помощь.
Задача - собрать кросскомпиллер линух 386 -> linux arm (Для смартфона). Все это делается на Ubuntu (предупреждаю - пару дней на линуксе только :oops: ).
Что делаю:
1. скачал и установил FPC 2.2.2.
2. скачать из свн полностью исходники фпс
3. сделал make clean -> make all. В итоге получил сборку для 386го линуха, на укоем и работаю (что и понятно - таргет не указан, все по дефолту). При этом все хорошо, никаких ошибок. make install тоже проходит без ошибок.
4. теперь пытаюсь сделать следующий шаг, т.е. получить из исходников кросскомпиллер. Все делаю как тут http://www.codenet.ru/progr/other/FreePascal-WinCE.php.
Строки
make all CPU_TARGET=arm OS_TARGET=wince (это не для меня строка, но ее я тоже пробовал)
как и
make all CPU_TARGET=arm OS_TARGET=linux (это уже как раз то что мне надо)
выдают мне ошибку что ppcrossarm не может быть запущен.
При этом пробовал как сборку папки compiler, так и всего fpc.
Поиском определяю что никаких файлов с похожим именем и вовсе нет на компьютере...
Не могу понять, явно что-то упустил но не пойму что...
Да, бинутилсы тоже устанавливал, но там ничего похожего нет (как я понимаю это для следующего шага).
Вообще кроссарм собирается из тех-же исходников тем-же компилятором но с другими флагами или как?
Прошу помощи у спецов.
Заранее спасибо.

PS: был бы рад любой ссылке на информацию, особенно на качественный и глубокий обзор структуры FPC, как работает и все такое. На нем я уже писал под винду достаточно, а вот нутро его мне неизвестно, как собрать что куда... Опятьже бинутилсы и тулчейны для меня загадка :roll: ...
Sergunoid
незнакомец
 
Сообщения: 3
Зарегистрирован: 26.02.2009 00:58:26

Re: Пробую собрать кросскомпилятор.

Сообщение Logo » 26.02.2009 06:44:01

1). Необходимы исходники fpc, желательно 2.2.3 (он уже довольно хорошо допилен). Взять можно:
svn checkout http://svn.freepascal.org/svn/fpc/branches/fixes_2_2 fpc-2.2.3
2). Необходимо иметь компилятор fpc ppc386. Если стоит ppcx64, то придется, как минимум, взять один файл - ppc386. 64-х разрядный не компилирует в ARM.
3). Проверяем компиляцию под родную платформу. Заходим в каталог fpc-2.2.3 и делаем make clean all PP=/путь к компилятору/ppc386. Затем sudo make install PP=/путь к компилятору. Иногда sudo не дает результата, тогда задите командо su под рута и выполните make install PP=/путь к компилятору/ppc386

Если все прошло удачно, то можно переходить к кросс компиляции

4). Обязательно устанавливаем binutils. Я не знаю есть ли готовая сборка в Убунте, но думаю, что должна быть, ведь туда пихают все, что нужно и не нужно. В SuSE, нужный нам пакет называется cross-arm-binutils, подобное нужно искать и в Убунту. Если нет, то берем исходники binutils и компилируем для arm-linux.
5). Открываем консоль
6). Указываем пути к папке Компилятора fpc и к binutils: export PATH=$PATH:/путь к исходникам fpc-2.2.3/compiler:/opt/cross/bin
Binutils обычно ставится в директорию /opt/cross/, но проверьте у себя, точно ли оно там находится.
7). Переходим в каталог исходников fpc - fpc-2.2.3
8 ). make clean
9). На всякий случай выполняем: fpcmake -Tall -r , это для конфигурирования make-файло, какие платформы поддерживать. Выбираем все, чтобы не морочиться.
10). make all PP=/usr/local/lib/fpc/2.2.3/ppc386 CPU_TARGET=arm . После того, как мы раньше, откомпилировали и установили fpc, - он обычно находится в: /usr/local/lib/fpc/2.2.3/ppc386, Его и указываем, система не всегда сама разбирается.
11). Если пошло без ошибок - инсталируем под рутом:
> su
> export PATH=/usr/local/lib/fpc/2.2.3/bin:/opt/cross/bin:$PATH - пути проверьте и приведите к своим
> make crossinstall PP=/usr/local/lib/fpc/2.2.3/ppc386 CPU_TARGET=arm - путь к компилятору проверьте

При помощи sudo, у меня на SUSE не инсталируется, если у Вас получится, то воспользуйдесь sudo вместо входа под root`ом

Вроде ничего не пропустил.

Кросс компилятор будет находиться в корневом каталоге fpc:
/usr/local/lib/fpc/2.2.3/ppcrossarm
а модули в:
/usr/local/lib/fpc/2.2.3/units/arm-linux
Logo
постоялец
 
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Re: Пробую собрать кросскомпилятор.

Сообщение Sergei I. Gorelkin » 26.02.2009 13:31:46

Не далее как вчера занимался тем же самым, руководствуясь уже упомянутой статьей, только в винде. Пришел к выводу, что в статье написана какая-то хрень.
Описанная во всех подробностях процедура сборки "родного" компилятора для обычных (т.е. тех, кто пользуется релизными версиями) пользователей представляет, как бы это сказать... довольно сомнительную ценность. А "необычные" и так проделают ее во сне десять раз на бис.

Дальше, вот это:
Код: Выделить всё
make all CPU_TARGET=arm OS_TARGET=wince

может собрать кросскомпилятор только в том случае, если он уже есть (а если он уже есть - зачем его собирать?)

Методом проб и ошибок выяснил, что если есть только исходники и "родной" компилятор, то компилятор для другого процессора нужно собирать вот так:
Код: Выделить всё
make PPC_TARGET=arm

В результате получается компилятор с именем ppcarm[.exe], который умеет компилить как для Linux, так и для WinCE.

Получился ppcarm, но все попытки собрать что-то для ARM требуют ppcrossarm. Чем один отличается от другого - так и не понял. Поэтому просто ткнул make носом в то, что есть, и все, как ни странно, собралось (следующими командами вначале в папке rtl, потом в папке packages):
Код: Выделить всё
make PP=ppcarm OS_TARGET=wince
make install PP=ppcarm OS_TARGET=wince

Т.к. ppcarm знает только об ARM, указание CPU_TARGET не обязательно.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1407
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Пробую собрать кросскомпилятор.

Сообщение Юра » 26.02.2009 14:32:11

Может hands.sys не правильно установлен? :wink:

Нужно иметь правильно установленный родной компилятор последней зарелизеной версии, а также cross-binutils для целевой платформы. cross-binutils должны иметь "правильные" имена (например, as должен иметь имя arm-wince-as, итд), а также находиться в пути.

Вот эти строки чудесно собирают и устанавливают снапшот кросс компилятора у меня винде:

Код: Выделить всё
make distclean
make all OS_TARGET=wince CPU_TARGET=arm
make install CROSSINSTALL=1 OS_TARGET=wince CPU_TARGET=arm SNAPSHOT=1 INSTALL_PREFIX=C:/Develop/FPC/pp23


Аналогично делается и в линуксе.
Последний раз редактировалось Юра 26.02.2009 17:58:13, всего редактировалось 1 раз.
Юра
постоялец
 
Сообщения: 163
Зарегистрирован: 25.05.2005 10:20:09
Откуда: Украина, Киев

Re: Пробую собрать кросскомпилятор.

Сообщение Sergunoid » 26.02.2009 15:13:14

Большое спасибо!
Все собралось.
Главная загвоздка была в том что установленный бинутилс был не совсем тот, и имена файлов не совпадали.
Да в добавок я к ним PATH не прописал (хотя это все равно, ведь бинутилсы были не те).
Установил бинутилсы (точнее просто распаковал все что в архиве в bin папке), прописал пути, сделал кросс компиляцию и появился ppcrossarm.
Тестовое приложение также собралось без проблем.

Еще раз спасибо! :)
Sergunoid
незнакомец
 
Сообщения: 3
Зарегистрирован: 26.02.2009 00:58:26

Re: Пробую собрать кросскомпилятор.

Сообщение bw » 23.09.2011 19:56:38

А почему ppcx64 (Linux) самосборный или из коробки (Debian Squeeze) не хочет работать с платформами отличными от Linux (-Tlinux). Когда я собираю компилятор ppc386 (используется ppcx64, make PPC_TARGET=i386) такой странности не наблюдается, т.е. такой компилятор готов работать со всеми платформами (-Twin32 и т.д.)?

p.s. Спасибо Sergei I. Gorelkin за PPC_TARGET :-).

..bw
Аватара пользователя
bw
постоялец
 
Сообщения: 359
Зарегистрирован: 01.12.2005 11:36:23
Откуда: Усть-Илимск

Re: Пробую собрать кросскомпилятор.

Сообщение Sergei I. Gorelkin » 24.09.2011 00:46:10

При запуске "ppcx64 -i" он печатает список платформ. Поддерживаются только платформы с тем же процессором, для которого собран компилятор, т.е. у ppcx64 будет win64, а не win32.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1407
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Пробую собрать кросскомпилятор.

Сообщение bw » 24.09.2011 02:30:16

И то верно. Поленился перечитать какие у него ещё опции есть. Да и про win64 не сразу сообразил.
А чего он сбивает меня с толку и показывает только "-Tlinux" из доступных опций, косяк! У ppc386 с этим нормально.

p.s. Решил тряхнуть стариной, а то незаслуженно забросил язык :-).

..bw
Аватара пользователя
bw
постоялец
 
Сообщения: 359
Зарегистрирован: 01.12.2005 11:36:23
Откуда: Усть-Илимск


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

Рейтинг@Mail.ru