Компиляция под 32-бита из 64-битной системы

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

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

Компиляция под 32-бита из 64-битной системы

Сообщение unclechu » 03.07.2012 18:46:23

Доброго времени суток, моя ОС — xubuntu x64, подскажите пожалуйста, как компилировать под 32 бита из 64-битной системы? man fpc | grep 64 или 32 ничего не дают.
unclechu
новенький
 
Сообщения: 15
Зарегистрирован: 29.06.2012 06:11:58

Re: Компиляция под 32-бита из 64-битной системы

Сообщение kipar » 04.07.2012 13:03:13

А 32-битный fpc под xubuntu x64 не будет работать?
kipar
новенький
 
Сообщения: 78
Зарегистрирован: 04.03.2010 12:15:54

Re: Компиляция под 32-бита из 64-битной системы

Сообщение unclechu » 07.07.2012 17:21:57

kipar писал(а):А 32-битный fpc под xubuntu x64 не будет работать?

Мне нужно держать оба варианта. Для gcc нужен просто флаг -m32 (ну и там кое-какие либы не забыть), а тут как выкручиваться? Выбирать между?
unclechu
новенький
 
Сообщения: 15
Зарегистрирован: 29.06.2012 06:11:58

Re: Компиляция под 32-бита из 64-битной системы

Сообщение Mr.Smart » 07.07.2012 18:16:01

а здесь типа fpc -Pi386 и держать кучу дополнительных либ.
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Компиляция под 32-бита из 64-битной системы

Сообщение hinst » 07.07.2012 20:52:16

скачать CodeTyphon например
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Re: Компиляция под 32-бита из 64-битной системы

Сообщение Linus » 20.05.2013 16:24:18

Здравствуйте, собираю лазарь 0.9.30.4 под i386, из под debian 7 amd64. FPC 2.6.0
В исходниках лазаря: make clean all CPU_TARGET=i386
В ответ: error message: Failed to execute "ppc386", error code: 127

Вопрос: как это исправить?
Linus
новенький
 
Сообщения: 47
Зарегистрирован: 11.01.2013 22:01:28

Re: Компиляция под 32-бита из 64-битной системы

Сообщение SSerge » 21.05.2013 05:26:18

hinst писал(а):скачать CodeTyphon например


И что? У него два независимых компилятора с двумя независимыми комплектами библиотек.
Хотя да, ставится наверно проще, чем два стандартных лазаруса x64 и х32
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: Компиляция под 32-бита из 64-битной системы

Сообщение Сквозняк » 21.05.2013 20:07:03

unclechu писал(а):моя ОС — xubuntu x64, подскажите пожалуйста, как компилировать под 32 бита из 64-битной системы?

Качаешь с freepascal.org *.tar.gz сборку и устанавливаешь из под простого пользователя в каталог в хомяке. Далее, собираешь программу скриптом, например таким:
Код: Выделить всё
./cistilka2.sh

cd ~/fpc/fpc-2.6.0_32/bin/

./fpc  ~/putj/proga.pp  -Fu~/fpc/fpc-2.6.0_32/lib/fpc/2.6.0/units/i386-linux/* -CR -O3 -Mfpc

read -p "Нажмите Enter для продолжения..."


Но в идеале использовать два скрипта, тогда можно собирать кликом мышки по файлу.

Добавлено спустя 41 минуту 17 секунд:
Linus писал(а):Здравствуйте, собираю лазарь 0.9.30.4 под i386, из под debian 7 amd64. FPC 2.6.0В исходниках лазаря: make clean all CPU_TARGET=i386В ответ: error message: Failed to execute "ppc386", error code: 127Вопрос: как это исправить?

Проще всего собрать в 32 битном дистрибутиве (или чруте) и скопипастить каталоги с файлами в 64 битный дистр. Рабочий 32 бит лазарус не нужен - компилятор fpc нужной версии хорошо собирает лазарусные программы, только -Fu с лазарусными модулями нужно писать раньше паскальных - имена конфликтуют.

Добавлено спустя 2 минуты 17 секунд:
SSerge писал(а):Хотя да, ставится наверно проще, чем два стандартных лазаруса x64 и х32

Ага, "проще", особенно если у тебя не используется sudo и ты не желаешь его заводить.
Сквозняк
энтузиаст
 
Сообщения: 1129
Зарегистрирован: 29.06.2006 22:08:32

Re: Компиляция под 32-бита из 64-битной системы

Сообщение Linus » 24.05.2013 02:51:18

я уж думал получится, как то по-нормальному, без копипаста) попробуем опишемся

...скопипастил..
в fpc.cfg пописал


Код: Выделить всё
#!386*******************************************************************************

# searchpath for units and other system dependent things
-Fu/usr/lib/fpc/$fpcversion/units/i386-linux
-Fu/usr/lib/fpc/$fpcversion/units/i386-linux/*
-Fu/usr/lib/fpc/$fpcversion/units/i386-linux/rtl

#IFDEF FPCAPACHE_1_3
-Fu/usr/lib/fpc/$fpcversion/units/i386-linux/httpd13/
#ELSE
#IFDEF FPCAPACHE_2_0
-Fu/usr/lib/fpc/$fpcversion/units/i386-linux/httpd20
#ELSE
-Fu/usr/lib/fpc/$fpcversion/units/i386-linux/httpd22
#ENDIF
#ENDIF

# searchpath for fppkg user-specific packages
-Fu~/.fppkg/lib/fpc/$fpcversion/units/i386-linux/*


Лазарь ругается:
Проект использует целевую ОС linux и процессор i386.
System.ppu для этой цели не был найден в каталогах двоичных файлов FPC.
Убедитесь в том, что FPC установлен корректно для данной цели, и что в файл fpc.cfg вписаны верные каталоги.
Linus
новенький
 
Сообщения: 47
Зарегистрирован: 11.01.2013 22:01:28

Re: Компиляция под 32-бита из 64-битной системы

Сообщение Сквозняк » 24.05.2013 15:01:37

в fpc.cfg пописал

Да вроде там и так нормально написано, ничего править не надо. На всякий случай поищи файлы fpc.cfg .fpc.cfg в каталоге пользователя, если найдёшь, удали - они там больше мешают чем помогают.
Лазарь ругается:
Проект использует целевую ОС linux и процессор i386.

А ты его не запускай, он и не будет ругаться :mrgreen: Проект пишешь и отлаживаешь в 64 битном лазаре а в таком же 32 битном только собираешь. Причём для сборки используешь его родной fpc и его модули. В моём проекте используются только стандартные компоненты, поэтому просто распаковал пакеты, сложил их в каталог и собираю таким скриптом
Код: Выделить всё
#!/bin/sh
p=`(echo ${BASH_SOURCE[0]}) 2>&1`
p=${p%%:*}
d=${p%/*}
cd $d

# скрипт для стирания *.o, *.a, *.ppu
./cistilka2.sh

cd ~/lazarus+/fpc-2.6.0-2.fc17.i686/usr/bin

./fpc  ~/7/f/1/222/proga/ishodniki/q/proga.pp -dLCL -dLCLgtk2 -Fu~/7/f/1/222/proga/ishodniki/q/i_dr/* -Fu~/7/f/1/222/proga/ishodniki/q/laz/* -Fu~/lazarus+/lazarus-1.0.4-0.i386/usr/lib/lazarus/lcl/units/i386-linux/gtk2 -Fu~/lazarus+/lazarus-1.0.4-0.i386/usr/lib/lazarus/lcl/units/i386-linux -Fu~/lazarus+/lazarus-1.0.4-0.i386/usr/lib/lazarus/components/lazutils/lib/i386-linux -Fu~/lazarus+/fpc-2.6.0-2.fc17.i686/usr/lib/fpc/2.6.0/units/i386-linux/* -Fu~/7/f/1/222/proga/ishodniki/q/lib/i386-linux/* -CR -O3 -Mfpc

read -p "Нажмите Enter для продолжения..."
Сквозняк
энтузиаст
 
Сообщения: 1129
Зарегистрирован: 29.06.2006 22:08:32

Re: Компиляция под 32-бита из 64-битной системы

Сообщение Linus » 24.05.2013 16:01:49

Сквозняк писал(а):А ты его не запускай, он и не будет ругаться Проект пишешь и отлаживаешь в 64 битном лазаре а в таком же 32 битном только собираешь.


вот как на 32-х собирать? не ставить же 32 на виртуаль, только для этого. ИМХО извращение.
Опять его просим...
Код: Выделить всё
cd .lazarus-src-i386
make clean all CPU_TARGET=i386
....
Error: ppc386 can't be executed, error message: Failed to execute "ppc386", error code: 127
make[1]: *** [lazaruspackageintf.ppu] Ошибка 1
make[1]: Leaving directory `/home/programmeur/.lazarus-src-i386/packager/registration'


ppc386 лежит в /etc/fpc где ему положено, отмечен исполняемым.
Linus
новенький
 
Сообщения: 47
Зарегистрирован: 11.01.2013 22:01:28

Re: Компиляция под 32-бита из 64-битной системы

Сообщение daesher » 24.05.2013 21:53:46

Насколько я знаю, не так всё сложно. Общая последовательность действий (при сборке из исходников):
1. Собрать FPC под i386 (для этого лучше всего куда-нибудь скачать файл ppc386 и указать его в make all FPC=...)
2. Установить всё + ppc386 в путь для исполняемых файлов.
3. Собрать FPC для x86_64 (крайне желательно - с помощью скачанного ppcx64, кросс-компиляция только всё усложнит)
4. Установить всё + ppcx64. ppc386 не затрётся, пути к модулям - тем более.
5. Сгенерировать fpc.cfg
При этом должен подхватиться корректный компилятор, в параметрах fpc можно будет указывать правильную целевую платформу.
7. Собрать lazarus для желаемой платформы (лучше x86_64)
8. Запустить lazarus. При необходимости сборки проекта под другую платформу просто указать её явным образом в параметрах компилятора.
Вот, примерно, так. Я пробовал так делать с кодом из svn - получалось.
daesher
постоялец
 
Сообщения: 221
Зарегистрирован: 09.03.2010 22:17:14

Re: Компиляция под 32-бита из 64-битной системы

Сообщение Linus » 25.05.2013 23:05:11

Выкачал исходники..собрал fpc под i386 и x64.. теперь все лежит в /usr/local/lib/fpc...
Пересобрал Лазарус. Под 64 опять же все работает, стоит только поставить целевую платформу i386 - летят маты (указывал путь к ppc386 при смене платформы -- не помогло).

Что делал:
Код: Выделить всё
cd .fpc-2.6.0-src
make clean all PP=/home/programmeur/.fpc-2.6.0-src/ppc38
sudo make install PP=/home/programmeur/.fpc-2.6.0-src/ppc38

make clean all PP=/home/programmeur/.fpc-2.6.0-src/ppcx64
sudo make install PP=/home/programmeur/.fpc-2.6.0-src/ppcx64
sudo fpcmkcfg >/etc/fpc.cfg


...в голову вопрос забрел.. в ядре надо оставлять инструкции под различные процессоры? (я это при сборке вырубил)
Linus
новенький
 
Сообщения: 47
Зарегистрирован: 11.01.2013 22:01:28

Re: Компиляция под 32-бита из 64-битной системы

Сообщение daesher » 26.05.2013 09:44:49

...в голову вопрос забрел.. в ядре надо оставлять инструкции под различные процессоры? (я это при сборке вырубил)

Возможно - и даже очень вероятно. Если не работают обычные 32-разрядные бинарники, логично, что не будет работать и fpc. Только вопрос: собирается ли ppc386 (с помощью скачанного ppc386)? Если да, то дело не в этом.
И ещё: идентичны ли сборки ppcx64 и ppc386 (т.е., сделаны ли они с одних исходников)?
Далее: ppc386, ppcx64 и fpc (или хотя бы ссылки на них) надо разместить в одном каталоге.
daesher
постоялец
 
Сообщения: 221
Зарегистрирован: 09.03.2010 22:17:14

Re: Компиляция под 32-бита из 64-битной системы

Сообщение Padre_Mortius » 26.05.2013 11:40:44

Может стоит к оригинальной инструкции от разработчиков обратиться?
Там все подробно расписано.
P.S. для всяких *buntu для работы с 32-х битными приложениями нужно установить метапакет multiarch
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

След.

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

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

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

Рейтинг@Mail.ru