Кроскомпиляция из Linux64 в Win32

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

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

Ответить
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Кроскомпиляция из Linux64 в Win32

Сообщение alexs »

У кого работает кроскомпиляция из Linux64 в Win32?
FPC 2.7 в Linux64 даже не содержит целевую платформу win32 в ключах.

Код: Выделить всё

$  fpc -h|grep Twin
      -Twin64    Win64 (64 bit Windows systems)


Код: Выделить всё

$ fpc dem.pas -Twin32
Error: Illegal parameter: -Twin32
Error: /usr/local/bin/ppcx64 returned an error exitcode (normal if you did not specify a source file to be compiled)


Как понимать?
Аватара пользователя
Alexx2000
постоялец
Сообщения: 490
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи
Контактная информация:

Сообщение Alexx2000 »

Кросскомпилятор для 32 бит установлен? Также, насколько я знаю, кроме указания операционки, необходимо еще и указывать целевой процессор (-Pi386).
Аватара пользователя
bw
постоялец
Сообщения: 359
Зарегистрирован: 01.12.2005 10:36:23
Откуда: Усть-Илимск
Контактная информация:

Сообщение bw »

ppcx64 не может собирать в 32bit, а ppc386 не может в 64bit. Для начала тебе нужно собрать ppc386 для своей платформы, т.е. он будет 64'битным, но компилить сможет в 32 (только в 32).
Вот такие чудеса :-).

..bw
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

bw
Есть более подробный ман где либо?
Везде только встречаю о кроскомпиляциимежду OS. А вот между процессорами - не видно.
Аватара пользователя
Alexx2000
постоялец
Сообщения: 490
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи
Контактная информация:

Сообщение Alexx2000 »

Вот достаточно подробно расписано, правда там про сборку из под Linux32 в Win32/Win64, но принцип тот же самый
daesher
постоялец
Сообщения: 221
Зарегистрирован: 09.03.2010 21:17:14

Сообщение daesher »

В Linux64 (как и в win64) прекрасно будет работать нативный компилятор для i386. Если есть такой файл (ppc386), с ним будет куда меньше хлопот. В противном случае, могут быть проблемы (в виде поиска кросс-утилит для компиляции из x86_64 в x86, тогда как с такой задачей легко справятся и обычные утилиты).
Kitayets
постоялец
Сообщения: 174
Зарегистрирован: 05.05.2010 21:15:24

Сообщение Kitayets »

2daesher - с 2-мя компиляторами неудобно работать в lazarus, он просто не поддерживает такой режим. Нужно собирать натив + кросс.

Кстати очень многие тонкости кросскомпиляции (именно для винды) нигде не описываются. Например какие нужны внешние утилиты для win x86_64.

Опишу подробнее. Проект freepascal собирает fpc для винды так: win32 - native, win64 - cross (т.е. 32->64). Причём пакет с cross компилятором ставится в папку к 32-битному компилятору и содержит ОДИН exe-шник (собственно сам кросс компилятор), и никаких cross bin utils, т.е. ни ассемблера ни линковщика ни упаковщика библиотек, при этом вполне себе собирает 64-битные приложения в 32битном окружении. (как это вообще взможно???)

Проект lazarus собирает fpc для win64 как native и в стабильных версиях там тоже отсутствуют ассемблер и линковщик (как это работает я тоже не понимаю), но в ночных сборках эти приложения присутствуют.

Дока по сборке кросскомпилятора нам твёрдо говорит, что для его сборки и функционирования нам нужны bin утилиты целевой ОС. Как это сочетается с отсутствием оных в оф. сборке fpc (cross win32 to 64) не совсем понятно.
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Последнии версии FPC прекрасно собираются из под wine.
Остановился на этом.
Ответить