Кросс из Линукса в Вин

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

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

Кросс из Линукса в Вин

Сообщение Alexander » 14.01.2007 20:50:52

Решил попробовать кросскомпиляцию. Так, чтобы из Линукса делать
Вин экзешники.

Вначале попробовал сразу:

make OS_TARGET=win32 CPU_TARGET=i386 build

Не прошло, затребовал ассемблер (для Вин).

Скомпилировал (из исходников обычных бин утилс для Линукса) с
целью mingw32. Всё прошло "на ура", в результате появилась папка
/usr/i386-mingw32 в которой были ассемблер, линкер ... Вполне
работоспособные. Я дал на них симлинки в /bin/ (такие как хотел FPC).

FPC нормально собрался. Но.
В результате получились... ЭКЗЕШНИКИ ДЛЯ ВИН !
Вполне нормальные такие экзешники в формате РЕ.
После этого, естественно, make install уже не сработал
(а если бы и сработал ?) и make clean тоже не стал работать,
жалуясь на невозможность запустить pwd.exe (!!!).
Стёр, вынул из архива.

Вот такой кросс.
Аватара пользователя
Alexander
энтузиаст
 
Сообщения: 701
Зарегистрирован: 18.12.2005 19:10:00
Откуда: оттуда

Re: Кросс из Линукса в Вин

Сообщение Иван Шихалев » 15.01.2007 07:57:44

Alexander писал(а):В результате получились... ЭКЗЕШНИКИ ДЛЯ ВИН !


А что должно было получиться? ;)
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Сообщение Alexander » 16.01.2007 07:13:36

Хотел получить библиотеки и что там ещё надо
для компиляции вин экзешников. С ключом -Twin32.

Я не удивлюсь что делаю что то не так. Но что ? Какой здесь принцип ?

Кто для кого и куда кросс ?
Аватара пользователя
Alexander
энтузиаст
 
Сообщения: 701
Зарегистрирован: 18.12.2005 19:10:00
Откуда: оттуда

Сообщение Sergei I. Gorelkin » 16.01.2007 17:09:14

Да все правильно, только сам компилятор не нужно собирать.
Линуксовый компилятор уже умеет компилировать для Win и не только. Список того, что он умеет, можно получить запустив fpc -i.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1396
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Alexander » 16.01.2007 17:55:28

Список внушает уважение. С компилятором понял, он, оказывается,
уже готов к бою. Спасибо !

Только как всё таки сделать и установить библиотеки ?
Чтобы можно было сказать: uses windows;
Аватара пользователя
Alexander
энтузиаст
 
Сообщения: 701
Зарегистрирован: 18.12.2005 19:10:00
Откуда: оттуда

Сообщение Cheb » 21.01.2007 12:17:35

[чешет в затылке] Да?.. А я для этих целей, не долго думая, проинсталлировал под wine виндовскую версию Лазаря. Диск большой, гигабайтом меньше, гигабайтом больше...
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Сообщение Mirage » 21.01.2007 14:02:07

Я компилировал из винды под линух - все нормально. Соответствующие библиотеки и бинарники скачал с freepascal.org. Может и для обратного направления есть.
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Сообщение Alexander » 21.01.2007 15:50:00

Интересно было из исходников сделать. Да и что то я не понял
что мне надо на сайте забирать.

В результате вышеуказанной операции библиотеки то в общем
получились. Только откуда куда и как их надо положить чтобы заработали.
Дерево там не хилое. А при компиляции оно разбросано совсем иначе.
И ещё какие то файлы Package.fpc в каждой папке.

До таких страстей как Лазарус я пока доходить не собираюсь.
Главное чтобы консольные приложения и длл получались. А если
пойдёт можно и MSE попробовать.
Аватара пользователя
Alexander
энтузиаст
 
Сообщения: 701
Зарегистрирован: 18.12.2005 19:10:00
Откуда: оттуда

Сообщение shade » 21.01.2007 19:36:52

Мне нужно наоборот из Windows в Linux. Если я правильно понял, то можно скомпилировать все на Windows под Linux, а скомпоновать уже в Linux. Вопрос только в том, что нужно скормить компоновщику и куда раскидать полученные бинарники и RTL.
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение Mirage » 21.01.2007 22:05:51

Alexander: Положить по идее нужно в одну папку units\i386-win32, которая будет найдена компилятором при задании Target. И бинарники еще куда-то. См. ссылку ниже. Еще было в форуме сообщение с подробным описанием кросскомпиляции Win32->Linux, но я не нашел.:(

shade:
Нет, можно прямо получить выполняемый файл.
http://freepascal.ru/forum/viewtopic.ph ... 0%EE%F1%F1
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Сообщение shade » 21.01.2007 22:17:59

Mirage писал(а):Нет, можно прямо получить выполняемый файл.

Понятно, что можно, но посудите сами:
Размер binutils для кросскомпиляции 26 Мб
Размер rpm-пакета 13Мб,
Вывод: проще скачать готовый rpm
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение shade » 21.01.2007 22:33:31

А, понял, 26 Мб за полняый пакет, а только win32->linux 1,3Мб...
binutils-2.15-win32-i386-linux.zip
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение Alexander » 04.02.2007 23:39:41

Эпопея не закончилась распаковкой из архива ! Make не работал и
после распаковки FPC из архива. В том числе и makefiles примеров итд.
Просто ФПК работал.

До настоящего времени эту проблему я решить не мог.
Пытался смотреть в настройках - без толку.
Но сегодня полез в /usr/bin/ и нашёл там...
кучу вин экзешников (ar.exe, ld.exe). Кто их туда
положил я не понял (binutils или попытка кросса fpc ?)
но не это важно.

Make пытался запускать их !
Как только я их удалил (*.exe), make заработал.
Аватара пользователя
Alexander
энтузиаст
 
Сообщения: 701
Зарегистрирован: 18.12.2005 19:10:00
Откуда: оттуда

Сообщение shade » 05.02.2007 13:03:17

Alexander

У меня все перекомпилировалось (из Win в Lin) :)

А так не пробовали:

1. Под линухом
(сначала по-хорошему make clean или возьмите чистые исходники, если нет по пробуйте как есть)
make OS_TARGET=win32 CPU_TARGET=i386 build

2. Закопировать все (и исходники и полученные экзешники, которые лежат рядом с исходниками) на диск доступный Windows

3. Перезагрузиться в Windows и далее все под Windows

4. Найти ppc386.exe (да и все экзешники и dll-ки), закинуть их в какую нибудь временную папку, добавить путь к папке с экзешникми в PATH

5. Среди исходников найти rtl/units/i386-win32 или что-то подобное где лежат файлы *.o, *.a, *.ppu, посмотрите есть ли system.ppu
Этот каталог со всем его содержимым можно скопировать (для надежности, хотя как мне кажеться make clean их не трогает) куда-нибудь еще.
Запомните (или скопируйте в буфер) полный путь к папке i386-win32

6. Создайте или скопируйте (fpc.cfg), пропишите в нем опиции
-Fu<путь к i386-win32>

7. перейдите в каталог с исходниками и поехали
make clean
make all
make install

8. ищем каталог <диск>:\pp, смотрим все ли наместе. Создаем и настраиваем <диск>:\pp\bin\i386-win32\fpc.cfg, добавляем <диск>:\pp\bin в переменую PATH, проверяем все ли работает и, если все впорядке чистим все временые файлы и каталоги


PS: Я сначала компилировал только ppc386
cd fpc/compiler
make OS_TARGET=linux cycle
а потом все остальное компилировал уже в Linux, в том числе и Лазаря
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение shade » 05.02.2007 13:21:54

Вот решил написать статью по кросскомпиляции компилятора (на примере кросскомпиляции из Win в Lin)
Пока черновик:
http://zolotov.h14.ru/fpc_cross.htm
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

След.

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

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

Сейчас этот форум просматривают: Yandex [Bot] и гости: 51

Рейтинг@Mail.ru