Компиляция x64-x32

Вопросы программирования и использования среды Lazarus.

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

Ответить
Voltag
новенький
Сообщения: 29
Зарегистрирован: 02.04.2008 03:49:33

Компиляция x64-x32

Сообщение Voltag »

Здравствуйте уважаемые жители и посетители форума!

Задача у меня вроде простая, но сам осилить видимо не могу.
У меня 64 разрядная Win10 на которой стоит Лазарус.
Надо мне компиляцию для 32 разрядных операционок семейства Виндовс(к примеру win8/32).

Я чрезвычайно обрадовался когда обнаружил в Параметрах проекта режимы сборки.
(Проект - Параметры проекты - настройка и целевая платформа).
С подозрением, что "халявы не будет", я установил ДРУГОЙ Лазарус(32 разрядный) в соседнюю папку. На всякий случай.
так же поставил себе это(на 64 версию): Кросс-компилятор. lazarus-1.4.0-fpc-2.6.4-cross-x86_64-win64-win32.exe

- Запуск Лазарус 64 разрядный
Если я выставляю в сборке Win32 то получаю:
Для использования компилятора FPC отсутствует файл настройки.
Вероятно компилятор не сможет найти ряд модулей.
Проверьте что FPC установлен правильно.

Я понимаю что он хочет от меня настроек FPС
и по хорошему должен подпихнуть ему FPC от 32 разрядной сборки, но как это сделать?

- Запуск Лазарус 32 разрядный
Далее, если я запускаю Лазарус(32) который я установил со своими настройками(т.е. раздельно с Лазарус(64) ) он мне говорит что(при старте):
Ошибка: отсутствует файл fpc.cfg.
Хотя он там есть: D:\Lazarus_х32\fpc\3.0.0\bin\i386-win32\ (и 'x' английская буква в Lazarus_х32)
Каталоги я все проверил, проставил прямые пути.
Заглянул в сам конфиг, пути там тоже вроде, на мой непрофессиональный взгляд в норме.
При запуске самой среды (игнорировании ошибки) появляется такое же окошко, как и в первом случае.
Цитирую частично: Для использования компилятора FPC отсутствует файл настройки...
что делать?

Я выделил вопросы жирным щрифтом, чтобы они не потерялись. Я подумал, что возможно, эти проблемы из за одного файла конфига которого нет
(или как бы нет), поэтому и объединил посты.

Программы и версии компиляторов(из "Справка - О проекте лазарус"):
64 разрядная IDE ver 1.6.2 FPC 3.0.0
x86_64-win64-win32/win64

32 разрядная IDE ver 1.6.2 FPC 3.0.0
i386-win32-win32/win64

С уважением
Последний раз редактировалось Voltag 31.01.2017 21:44:23, всего редактировалось 1 раз.
Deimos
постоялец
Сообщения: 174
Зарегистрирован: 16.01.2010 23:31:30

Сообщение Deimos »

Я решаю проблему установкой двух версий и 32 и 64 со своими настройками для каждой. Win 10 - Все работает нормально. Насколько помню, при установке ВТОРОЙ версии при уже установленной установщик предлагает использовать отдельный каталог настроек.

в win 7 тоже все работало нормально.

Я подозреваю, что есть способ кросскомпиляции и даже встречал упоминания на форуме, но решил просто не морочить себе голову )
Voltag
новенький
Сообщения: 29
Зарегистрирован: 02.04.2008 03:49:33

Сообщение Voltag »

Спасибо Deimos за ответ!
Я как раз и установил 32 разрядную версию тоже. Создал отдельный каталог =)
Скорее всего я плохо оформил текст. Прошу прощения, сейчас подправлю.
Deimos
постоялец
Сообщения: 174
Зарегистрирован: 16.01.2010 23:31:30

Сообщение Deimos »

Voltag писал(а):Скорее всего я плохо оформил текст. Прошу прощения, сейчас подправлю.

Нормально все с текстом и вопрос вполне понятен.

Надеюсь, что подтянутся те, кто объяснит более толково. Не подтянутся - я сам пересмотрю еще раз и помогу.
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3071
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

Другого варианта, кроме установки двух отдельных версий для 32 и 64, на данный момент нет.
gvido
постоялец
Сообщения: 188
Зарегистрирован: 28.03.2012 11:35:31

Сообщение gvido »

Добрый день.
Все нормально компилируется 64->32 и 32->64. Я давно так делаю, еще с 1.4 версии лазаруса.
Сейчас стоит lazarus-1
.6.2-fpc-3.0.0-win64 и модуль lazarus-1.6.2-fpc-3.0.0-cross-i386-win32-win64.
В параметрах проекта для x86 - Операционная система (Win32) и целевой семейство процессоров (i386), если лазарус х64.
slyubez
постоялец
Сообщения: 186
Зарегистрирован: 31.03.2015 07:44:07

Сообщение slyubez »

Я тоже пробовал поставить пакет кросс-компиляции, и ничего не получилось. Приходится довольствоваться двумя разными версиями.
Аватара пользователя
WAYFARER
энтузиаст
Сообщения: 567
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Сообщение WAYFARER »

Voltag,
Когда давно, когда писал под Win использовал такой способ.

скачиваем 32х битную версию Lazarus и устанавливаем во временную папку
Теперь нам нужно скопировать из Lazarus 32 в Lazarus64 следующие файлы и папки:

Из папки lazarus32lclunits копируем папку i386-win32 в lazarus64lclunits
Из папки lazarus32fpcx.x.xunits копируем папку i386-win32 в Lazarus64fpc2.x.xunits
Из папки lazarus32fpcx.x.x\bin i386-win32 копируем файл ppc386.exe в Lazarus64fpc2.x.xbinx86_64-win64


На этом можно Lazarus 32 можно удалять.
Теперь в настройках проекта выбираем целевую платформу:
Изображение

Добавлено спустя 12 минут 56 секунд:
viewtopic.php?f=5&t=9283&p=74313&hilit=http%3A%2F%2Flindeberg1987.blogspot.ru#p74313 - вот тут немного дополнено, хотя у меня все недостающее собиралось автоматом.
Voltag
новенький
Сообщения: 29
Зарегистрирован: 02.04.2008 03:49:33

Сообщение Voltag »

Всем спасибо за помощь, особенно WAYFARER
Я решил проблему (так получилось) с другой стороны.

Итак, поскольку у меня ошибки в FPC (проблемы с конфигом) я решил переустановить FPC руками.
Попытка скачать 64 разрядный компилятор не увенчалась успехом (или я плохо искал).
Сперва, я не нашёл в sourceforge. Ссылка вела меня на:
https://sourceforge.net/projects/freepa ... n32/3.0.0/
но мне не нужна кросскомпиляция 32->64

потом я догадался тыкнуть сюда:
http://www.freepascal.org/down/x86_64/win64-austria.var

там написано:
There is no native compiler available for x86_64 Win64. You have to use a cross-compiler.
(перевод свободный):
Нет тебе нативной x86_64 Win64 компиляции! Используй кросскомпилятор.

После этого я скачал 32 разрядный компилятор, скачал кросс 32-64
Установил на место FPC в лазарусе новый FPC. Сперва переименовал старый и на его место установил нативный.
Установил кросскомпиляцию туда-же.
При запуске Лазарус поругался на отсутствие папки sourse в компиляторе.
Переписал папку sourse из старой папки FPC (которую я переименовал вначале).

Всё запустилось. но...
отладка доступна только в режиме 32 разряда
Компиляция 64 делает "exe" но отказывается его запускать.
Этот вариант меня устраивает.

Позже разберусь с нормальной 64 -> 32, поковыряю конфиги, посмотрю пути.
Посмотрю, почему нет нативной x86_64 Win64 компиляции на сайте FPC а в Лазаре она есть.
Может я просто не вижу.

спасибо Kitayets за прекрасный совет по поводу подстановки -$(TargetOS) в пути (привожу ссылку на оригинал).
http://freepascal.ru/forum/viewtopic.ph ... .ru#p74313
Ответить