Кросс из Линукса в Вин
Модератор: Модераторы
- Alexander
- энтузиаст
- Сообщения: 888
- Зарегистрирован: 18.12.2005 18:10:00
- Откуда: оттуда
- Контактная информация:
Кросс из Линукса в Вин
Решил попробовать кросскомпиляцию. Так, чтобы из Линукса делать
Вин экзешники.
Вначале попробовал сразу:
make OS_TARGET=win32 CPU_TARGET=i386 build
Не прошло, затребовал ассемблер (для Вин).
Скомпилировал (из исходников обычных бин утилс для Линукса) с
целью mingw32. Всё прошло "на ура", в результате появилась папка
/usr/i386-mingw32 в которой были ассемблер, линкер ... Вполне
работоспособные. Я дал на них симлинки в /bin/ (такие как хотел FPC).
FPC нормально собрался. Но.
В результате получились... ЭКЗЕШНИКИ ДЛЯ ВИН !
Вполне нормальные такие экзешники в формате РЕ.
После этого, естественно, make install уже не сработал
(а если бы и сработал ?) и make clean тоже не стал работать,
жалуясь на невозможность запустить pwd.exe (!!!).
Стёр, вынул из архива.
Вот такой кросс.
Вин экзешники.
Вначале попробовал сразу:
make OS_TARGET=win32 CPU_TARGET=i386 build
Не прошло, затребовал ассемблер (для Вин).
Скомпилировал (из исходников обычных бин утилс для Линукса) с
целью mingw32. Всё прошло "на ура", в результате появилась папка
/usr/i386-mingw32 в которой были ассемблер, линкер ... Вполне
работоспособные. Я дал на них симлинки в /bin/ (такие как хотел FPC).
FPC нормально собрался. Но.
В результате получились... ЭКЗЕШНИКИ ДЛЯ ВИН !
Вполне нормальные такие экзешники в формате РЕ.
После этого, естественно, make install уже не сработал
(а если бы и сработал ?) и make clean тоже не стал работать,
жалуясь на невозможность запустить pwd.exe (!!!).
Стёр, вынул из архива.
Вот такой кросс.
- Иван Шихалев
- энтузиаст
- Сообщения: 1138
- Зарегистрирован: 15.05.2006 11:26:13
- Откуда: Екатеринбург
- Контактная информация:
Alexander писал(а):В результате получились... ЭКЗЕШНИКИ ДЛЯ ВИН !
А что должно было получиться?
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
- Alexander
- энтузиаст
- Сообщения: 888
- Зарегистрирован: 18.12.2005 18:10:00
- Откуда: оттуда
- Контактная информация:
Интересно было из исходников сделать. Да и что то я не понял
что мне надо на сайте забирать.
В результате вышеуказанной операции библиотеки то в общем
получились. Только откуда куда и как их надо положить чтобы заработали.
Дерево там не хилое. А при компиляции оно разбросано совсем иначе.
И ещё какие то файлы Package.fpc в каждой папке.
До таких страстей как Лазарус я пока доходить не собираюсь.
Главное чтобы консольные приложения и длл получались. А если
пойдёт можно и MSE попробовать.
что мне надо на сайте забирать.
В результате вышеуказанной операции библиотеки то в общем
получились. Только откуда куда и как их надо положить чтобы заработали.
Дерево там не хилое. А при компиляции оно разбросано совсем иначе.
И ещё какие то файлы Package.fpc в каждой папке.
До таких страстей как Лазарус я пока доходить не собираюсь.
Главное чтобы консольные приложения и длл получались. А если
пойдёт можно и MSE попробовать.
- shade
- энтузиаст
- Сообщения: 879
- Зарегистрирован: 21.02.2006 19:15:48
- Откуда: http://shamangrad.net/
- Контактная информация:
-
Mirage
- энтузиаст
- Сообщения: 881
- Зарегистрирован: 06.05.2005 20:29:07
- Откуда: Russia
- Контактная информация:
Alexander: Положить по идее нужно в одну папку units\i386-win32, которая будет найдена компилятором при задании Target. И бинарники еще куда-то. См. ссылку ниже. Еще было в форуме сообщение с подробным описанием кросскомпиляции Win32->Linux, но я не нашел.
shade:
Нет, можно прямо получить выполняемый файл.
http://freepascal.ru/forum/viewtopic.ph ... 0%EE%F1%F1
shade:
Нет, можно прямо получить выполняемый файл.
http://freepascal.ru/forum/viewtopic.ph ... 0%EE%F1%F1
- shade
- энтузиаст
- Сообщения: 879
- Зарегистрирован: 21.02.2006 19:15:48
- Откуда: http://shamangrad.net/
- Контактная информация:
- shade
- энтузиаст
- Сообщения: 879
- Зарегистрирован: 21.02.2006 19:15:48
- Откуда: http://shamangrad.net/
- Контактная информация:
А, понял, 26 Мб за полняый пакет, а только win32->linux 1,3Мб...
binutils-2.15-win32-i386-linux.zip
binutils-2.15-win32-i386-linux.zip
- Alexander
- энтузиаст
- Сообщения: 888
- Зарегистрирован: 18.12.2005 18:10:00
- Откуда: оттуда
- Контактная информация:
Эпопея не закончилась распаковкой из архива ! Make не работал и
после распаковки FPC из архива. В том числе и makefiles примеров итд.
Просто ФПК работал.
До настоящего времени эту проблему я решить не мог.
Пытался смотреть в настройках - без толку.
Но сегодня полез в /usr/bin/ и нашёл там...
кучу вин экзешников (ar.exe, ld.exe). Кто их туда
положил я не понял (binutils или попытка кросса fpc ?)
но не это важно.
Make пытался запускать их !
Как только я их удалил (*.exe), make заработал.
после распаковки FPC из архива. В том числе и makefiles примеров итд.
Просто ФПК работал.
До настоящего времени эту проблему я решить не мог.
Пытался смотреть в настройках - без толку.
Но сегодня полез в /usr/bin/ и нашёл там...
кучу вин экзешников (ar.exe, ld.exe). Кто их туда
положил я не понял (binutils или попытка кросса fpc ?)
но не это важно.
Make пытался запускать их !
Как только я их удалил (*.exe), make заработал.
- shade
- энтузиаст
- Сообщения: 879
- Зарегистрирован: 21.02.2006 19:15:48
- Откуда: http://shamangrad.net/
- Контактная информация:
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, в том числе и Лазаря
У меня все перекомпилировалось (из 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 19:15:48
- Откуда: http://shamangrad.net/
- Контактная информация:
Вот решил написать статью по кросскомпиляции компилятора (на примере кросскомпиляции из Win в Lin)
Пока черновик:
http://zolotov.h14.ru/fpc_cross.htm
Пока черновик:
http://zolotov.h14.ru/fpc_cross.htm
