Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2 3      [все]
 Lazarus - Кроссплатформенность  [new]
san7667
Member

Откуда:
Сообщений: 31
Добрый день!
Кто юзает Lazarus, подскажите пожалуйста реально ли настроить компилятор таким образом, что бы он компилил сразу на Windows и Линукс?
14 сен 21, 12:38    [22371687]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
ъъъъъ
Member

Откуда:
Сообщений: 2657
san7667,

нельзя. Или туда, или сюда. По очереди, то есть.
14 сен 21, 12:57    [22371695]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
amsdev
Member

Откуда:
Сообщений: 55
Можно !

Скачайте FpcUpDeluxe, там можно выбрать установку кросс-компиляторов. Т.е. Лазарус сможет под виндой собрать бинарник под Linux (но не запускать/отлаживать).
14 сен 21, 13:00    [22371697]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
b0rk
Member

Откуда: Харьков
Сообщений: 610
san7667,

я в свое время настраивал компиляцию из под винды на Linux и macOS. оно то работало, то ломалось с выходом нового Lazarus или FPC. в теории такое сделать можно, а на практике... как повезет.

еще можно попробовать CodeTyphon - это, как я понимаю, порт Lazarus, но, по-моему, он больше заточен под кросс-компиляцию.
14 сен 21, 14:01    [22371732]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 27313
b0rk
еще можно попробовать CodeTyphon

Это помойка солянка, которая бывает несовместима между своими версиями.
Если и пользовать её серьезно, то не стоит обновлять, а если обновлять, то осторожно и отдельно от рабочей версии на случай легкого отката.
amsdev
FpcUpDeluxe

Более стабильный вариант.
14 сен 21, 15:13    [22371754]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Док
Member

Откуда: Казань
Сообщений: 7217
san7667,

все можно. Про fpcupdeluxe уже сказали. Там можно к готовой сборке фпц/лазарус прицепить кросскомпилятор под нужную ОСь(виджетсет) /разрядность.
Но для кросскомпиляции этого мало. Надо в настройках проекта добавить разные режимы сборки. А вот после этого можно билдить готовые файлы(хоть по очереди, хоть все разом).

Если нужны подробности - спрашивай
15 сен 21, 01:22    [22371976]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
san7667
Member

Откуда:
Сообщений: 31
Поставил fpcupdeluxe по инструкции - http://leybabronstain.ucoz.com/blog/ispolzovanie_krosskompiljacii_v_lazarus/2018-03-03-2

Но теперь компилит только под линукс , а на exе файл ругается типа невозможно запустить на windows
Получается что под линукс все норм проходит , а под виндой теперь нифига, в чем может быть ошибка?
15 сен 21, 07:21    [22371986]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
san7667
Member

Откуда:
Сообщений: 31
Док, Поставил fpcupdeluxe по инструкции - http://leybabronstain.ucoz.com/blog/ispolzovanie_krosskompiljacii_v_lazarus/2018-03-03-2

Но теперь компилит только под линукс , а на exе файл ругается типа невозможно запустить на windows
Получается что под линукс все норм проходит , а под виндой теперь нифига, в чем может быть ошибка?
15 сен 21, 07:32    [22371987]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Gallemar
Member

Откуда:
Сообщений: 5675
Док
Если нужны подробности - спрашивай

а ты как собираешь? Я не парил голову и ставил Lazarus на все четыре ОСи, только смотрел чтобы версии совпадали
15 сен 21, 09:30    [22371997]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Fr0sT-Brutal
Member

Откуда:
Сообщений: 985
Я билдю своим скриптом, потом просто в проекте добавляешь профили под target cpu/os и вперед. Единственное, надо бинарные утилы скачать под каждое сочетание
15 сен 21, 09:46    [22372008]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
san7667
Member

Откуда:
Сообщений: 31
Gallemar,
У меня win10 x64
Скачиваю fpcupdeluxe-i386-win32 , так как fpcupdeluxe-win64 у меня не работает потом exe фалй на винде

Сначала ставил Linux-i386 все работало, и под винду exe формировался и бинарник под линукс
Но в итоге бинарник не заработал на AstraLinux так как там архитектура x86_64

В итоге скачал под CPU x86_64 + OS Linux

В итоге линукс компилится, а exe нет пишет: СКРИН

Исполняемый файл компилятора : C:\Archive\development\fpcup\fpc\bin\i386-win32\ppcrossx64.exe

На 32 бит все норм, с 64 траблы, возможно из за fpcupdeluxe-i386-win32 что поставил, но хотелось бы на x32 , так как много машин такие еще осталось

К сообщению приложен файл. Размер - 10Kb
15 сен 21, 10:49    [22372022]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
san7667
Member

Откуда:
Сообщений: 31
Fr0sT-Brutal,
Я так и делаю, профиль под определенную ОС, но не работает что то одно в итоге
15 сен 21, 10:52    [22372023]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Fr0sT-Brutal
Member

Откуда:
Сообщений: 985
san7667
Fr0sT-Brutal,
Я так и делаю, профиль под определенную ОС, но не работает что то одно в итоге

FPC надо сбилдить под каждую целевую платформу. Лазарус это сам не делает
15 сен 21, 15:11    [22372137]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Док
Member

Откуда: Казань
Сообщений: 7217
san7667
Док, Поставил fpcupdeluxe по инструкции - http://leybabronstain.ucoz.com/blog/ispolzovanie_krosskompiljacii_v_lazarus/2018-03-03-2

Но теперь компилит только под линукс , а на exе файл ругается типа невозможно запустить на windows
Получается что под линукс все норм проходит , а под виндой теперь нифига, в чем может быть ошибка?

Инструкция слегка устарела с учётом того, что писалась 3 года назад ;)

С работы приеду, выложу отдельным топегом

Сообщение было отредактировано: 15 сен 21, 18:57
15 сен 21, 19:07    [22372220]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Док
Member

Откуда: Казань
Сообщений: 7217
Как сделать кросскомпиляцию в Лазарусе при помощи fpcupdeluxe (осторожно, много комиксов и букф)


Будем считать, что компилятор и лазарь уже установлены при помощи именно fpcupdeluxe и в поле "set install path" указана папка с установленными фпц/лазарем

Переходим на вкладку "cross"

Картинка с другого сайта.

Выбираем разрядность процессора и ОСь.

Обратите внимание: можно собирать кросскомпилятор под процессор другой разрядности на текущей платформе. Главное помнить, какой разрядности у вас запущен fpcupdeluxe (указанная на скрине софтинка собирает под винду 64-битный фпц, значит "кроссплатформой" под винду будет сборка компилятора x32/i386 и т.д.)

Кросскомпиляция под Windows.

Выбираем соответственно "i386/Windows" и жмем "Install compiler". После немного странных предупреждений

Картинка с другого сайта.

Картинка с другого сайта.

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

Картинка с другого сайта.

Картинка с другого сайта.

Примечание: как сделать режим сборки исполняемого файла под x32, смотри в следующем посте.


Кросскомпиляция под Linux.

Поскольку сборки кросскомпилятора под i386 и amd64 идентичны, опишу процесс для последнего из перечисленных.

Выбираем опции CPU=x86_64 и OS=linux, жмем "Install compiler". Получаем два странных уведомления

Картинка с другого сайта.

Картинка с другого сайта.

и ждем, пока софтинка не сообщит нам, что у него нет в данный момент инструмента для сборки кросскомпилятора и не предложит их нам немедленно скачать

Картинка с другого сайта.

Соглашаемся, наблюдая процесс их загрузки и распаковки

Картинка с другого сайта.

и терпеливо дожидаемся окончания сборки

Картинка с другого сайта.


Примечание: как сделать режим сборки исполняемого файла под i386/amd64, смотри в следующем посте.


Кросскомпиляция под MacOS(Darwin).

Поскольку для тестов своих проектов под макось я использую ее хакинтошные сборки в виртуалке, которые задействуют процессор x86_64, то здесь опишу процесс сборки кросскомпилятора этой архитектуры.

Выбираем CPU=x86_64 и OS=Darwin, жмем "Install compiler". Соглашаемся с уже привычными нам уведомлениями

Картинка с другого сайта.

Картинка с другого сайта.

и ждем, пока софтина опять не предупредит нас об отсутствующем инструментарии

Картинка с другого сайта.

Соглашаемся, наблюдая процесс загрузки и распаковки инструментария

Картинка с другого сайта.

Терпеливо наблюдаем за окончанием процесса

Картинка с другого сайта.


Примечание: как сделать режим сборки исполняемого файла под x86-64, смотри в следующем посте.

Tags:
#Lazarus #fpc #crosscompile
#лазарус #фпц #кросскомпиляция
16 сен 21, 00:10    [22372325]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Док
Member

Откуда: Казань
Сообщений: 7217
Как задать режимы сборки в Lazarus для кросскомпиляции

Чтобы собирать исполняемые файлы под разные платформы при помощи кросскомпилятора(ов), необходимо настроить соответствующие режимы сборок в проекте. Для этого открываем Лазарус, создаем новый проект, и открываем свойства проекта

Картинка с другого сайта.

В открывшемся дереве находим "Compiler options" и переходим к настройке режимов сборки ("Build modes"), нажав на кнопку с троеточием

Картинка с другого сайта.

По умолчанию Лазарь имеет один режим сборки ("Default"), который собирает исполняемый файл с отладочной информацией (остальные детали в данный момент несущественны).

При этом экзешник (если речь идет про винду) будет соответствовать разрядности компилятора (как мы помним из предыдущего топика, разрядность компилятора будет соответствовать разрядности fpcupdeluxe, при помощи которого его собрали).


Картинка с другого сайта.

Жмем на кнопку "Create Debug and Release modes", чтобы создать отдельно режимы отладки и релизных сборок

Картинка с другого сайта.

Теперь можно удалить режим "Default" и добавить еще пару релизных режимов под наши нужны, не забыв их соответствущим образом переименовать

Картинка с другого сайта.

Теперь закрываем окно и идем настраивать наши режимы.

Переходим в дереве настроек к пункту "Config and Target"

Картинка с другого сайта.

Последовательно выбирая в выпадающем списке "Build modes" заданные режимы сборки, задаем для каждого из них соответствующие настройки:

Debug настройки по умолчанию не трогаем! (если только точно не знаем что делаем)
Release_win32 OS = win32 CPU = i386 галочку "Win32 GUI application" не снимаем!
Release_win64 OS = win64 CPU = x86_64 галочку "Win32 GUI application" не снимаем!
Release_linux_i386 OS = Linux CPU = i386 галочку "Win32 GUI application" не снимаем!
Release_linux_amd64 OS = Linux CPU = x86_64 галочку "Win32 GUI application" не снимаем!
Release_Darwin_Cocoa OS = Darwin CPU = x86_64 галочку "Win32 GUI application" снимаем обязательно! См. примечание


Примечание: поскольку в каждой ОСи для отображения контролов на форме(ах) используются различные виджетсеты, то для "своей" Макоси (в предыдущем топике я писал, что использую Darwin с виджетами Cocoa) необходимы дополнительные настройки.

Необходимо снять галочку с "Win32 GUI application"

Картинка с другого сайта.

и нажать на ссылку "Select another widgetset" (или перейти в дереве проекта к пункту "Additions and Overrides")

Картинка с другого сайта.

В выпадающем списке "SetLCLWidgetType" выбрать пункт "Value "Cocoa" и удостовериться, что напротив этого режима сборки стоит отметка

Картинка с другого сайта.

и закрыть диалоговое окно.

Но это еще не все ...


Tags:
#Lazarus #fpc #crosscompile
#лазарус #фпц #кросскомпиляция
16 сен 21, 01:01    [22372331]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Док
Member

Откуда: Казань
Сообщений: 7217
Вишенка на торте

Если начать собирать проект в разных режимах, то все исполняемые файлы будут компилиться под одним именем и в одной папке, при этом они будут практически неотличимы друг от друга. Чтобы этого избежать, я вношу еще несколько изменений в свойства проекта, используя макросы IDE.

Допустим, файл моего проекта имеет название "fbutil_wrapper.lpi". Для debug-режима я указываю для выходного файла (поле "Target file name") значение:
debug\$NameOnly($(ProjFile))-debug

Картинка с другого сайта.

а для "релизных" сборок значение:
release\$NameOnly($(ProjFile))-$(TargetCPU)-$(TargetOS)

В результате, отладочные файлы лежат в отдельной папке, релизные - в отдельной

Картинка с другого сайта.




И напоследок...

Для быстрого выбора режима сборки можно воспользоваться тулбаром или соответствующим пунктом меню

Картинка с другого сайта.

Можно собирать файлы каждый по отдельности, либо скопом

Картинка с другого сайта.

Важный момент(!): если сборка идет под другую платформу, то нельзя собирать/компилить проект при помощи <F9> - получите ошибку о невозможности запустить исполняемый файл. Необходимо собирать/компилить исполняемый файл при помощи (если по дефолту) <Shift>+<F9>/<Ctrl>+<F9>

Надеюсь этот некраткий мануал кому-то поможет :)
16 сен 21, 01:27    [22372332]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
san7667
Member

Откуда:
Сообщений: 31
Док, Спасибо!
16 сен 21, 10:49    [22372406]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
vanderer
Member

Откуда:
Сообщений: 216
Есть еще вариант лазаруса (если можно так выразиться) CodeTyphon. В нем поддержка кросс-компиляции - это одна из фишек, на которой они сами акцентируют внимание.
Штука неоднозначная, некоторыми адептами лазаруса недолюбливаемая. Надеюсь, оно тут не табу :)

P.S. Оказывается, выше уже упоминали, не заметил.

Сообщение было отредактировано: 16 сен 21, 15:09
16 сен 21, 15:16    [22372570]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Док
Member

Откуда: Казань
Сообщений: 7217
vanderer,

имхо, основная проблема CT - монструозность и невозможность вычистить его из системы в случае фэйла при установке.
16 сен 21, 18:32    [22372668]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 3954
Док, эту б годноту на хабр завезти...
16 сен 21, 21:44    [22372728]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
zedxxx
Member

Откуда:
Сообщений: 140
makhaon
Док, эту б годноту на хабр завезти...

Или на гитхаб, чтобы это можно было себе в загашник склонировать.
16 сен 21, 22:48    [22372744]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Док
Member

Откуда: Казань
Сообщений: 7217
zedxxx,

думал уже как-то. Попробую в тутошний блог пихнуть
17 сен 21, 07:34    [22372790]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Gallemar
Member

Откуда:
Сообщений: 5675
Док
zedxxx,

думал уже как-то. Попробую в тутошний блог пихнуть

Лучше на хабр.
17 сен 21, 09:13    [22372807]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Док
Member

Откуда: Казань
Сообщений: 7217
Gallemar,

критикой за... замордуют. Тогда лучше на гитхаб :)
17 сен 21, 09:37    [22372820]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 3954
Док,

к критике нужно относится спокойно :) обычно на хабре достаточно хорошо к паскалевским статьям относятся
17 сен 21, 10:22    [22372843]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Док
Member

Откуда: Казань
Сообщений: 7217
makhaon,

жду от Рустама, когда бложик мне сделает тут
17 сен 21, 11:01    [22372863]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Fr0sT-Brutal
Member

Откуда:
Сообщений: 985
makhaon
Док,

к критике нужно относится спокойно :) обычно на хабре достаточно хорошо к паскалевским статьям относятся

То есть 99% постов из серии "А что, Дельфи еще живое?" это достаточно хорошо?))
17 сен 21, 11:27    [22372884]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
white_nigger
Member

Откуда: Тула
Сообщений: 2654
Fr0sT-Brutal
makhaon
Док,

к критике нужно относится спокойно :) обычно на хабре достаточно хорошо к паскалевским статьям относятся

То есть 99% постов из серии "А что, Дельфи еще живое?" это достаточно хорошо?))
Я про половину языков, не используемых мною могу так спросить. И что?
17 сен 21, 14:04    [22372959]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Gallemar
Member

Откуда:
Сообщений: 5675
Док
makhaon,

жду от Рустама, когда бложик мне сделает тут


после такого https://www.sql.ru/blogs/oracleandsql/2263 не очень хочется заходить в блог
17 сен 21, 14:07    [22372961]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
ъъъъъ
Member

Откуда:
Сообщений: 2657
Док,

в гитхабе тоже пЫшутЬ...
17 сен 21, 15:48    [22373019]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Док
Member

Откуда: Казань
Сообщений: 7217
ъъъъъ,

Хорошо, уговорили. Ухожу на гитхаб ;)

Только там либо большую книгу писать в виде отдельных глав, либо на каждую статью заводить новую репу

Сообщение было отредактировано: 17 сен 21, 17:04
17 сен 21, 17:13    [22373059]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Док
Member

Откуда: Казань
Сообщений: 7217
Del

Сообщение было отредактировано: 17 сен 21, 17:04
17 сен 21, 17:14    [22373060]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Док
Member

Откуда: Казань
Сообщений: 7217
Залил на гитхаб

https://github.com/zoltanleo/fpc_lazarus_notes

чтоб бложики по углам не писать
18 сен 21, 01:25    [22373149]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Fr0sT-Brutal
Member

Откуда:
Сообщений: 985
У fpc же есть вики, где эта статья точно будет увидена. Правда, надо будет перевести.
Мой способ на батниках тут https://github.com/Fr0sT-Brutal/FPC_Build
20 сен 21, 10:29    [22373516]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Док
Member

Откуда: Казань
Сообщений: 7217
Fr0sT-Brutal,

я по просьбе одного португальского товарища сделал зеркальный файл на буржуйском. А на фпц-ный ресурс мне лень его выкладывать, я другие цели преследовал :)
20 сен 21, 10:59    [22373534]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 3954
Док,

Отлично! Англоверсия существенно добавит число прочитавших.
20 сен 21, 11:30    [22373553]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Mikhail Tchervonenko
Member

Откуда: Münster, Germany
Сообщений: 1743
Док
san7667,

все можно. Про fpcupdeluxe уже сказали. Там можно к готовой сборке фпц/лазарус прицепить кросскомпилятор под нужную ОСь(виджетсет) /разрядность.
Но для кросскомпиляции этого мало. Надо в настройках проекта добавить разные режимы сборки. А вот после этого можно билдить готовые файлы(хоть по очереди, хоть все разом).

Если нужны подробности - спрашивай


было бы интересно на скриншоты посмотреть с настройками такого проекта. Я до сих пор всю среду поднимал на целевой платформе и там компилил (fpcupdeluxe тоже использую уже давно относительно).
20 сен 21, 14:23    [22373643]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Mikhail Tchervonenko
Member

Откуда: Münster, Germany
Сообщений: 1743
Mikhail Tchervonenko,

сорри, вижу внизу меня уже опередили :)
20 сен 21, 14:25    [22373646]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Док
Member

Откуда: Казань
Сообщений: 7217
Mikhail Tchervonenko
было бы интересно на скриншоты посмотреть с настройками такого проекта. Я до сих пор всю среду поднимал на целевой платформе и там компилил (fpcupdeluxe тоже использую уже давно относительно).

ИМХО, кросскомпилятор нужен для быстрой проверки функционала софтинки. Таки твой способ компилить в нативной среде готовый продукт - самый надежный. Я сам так делаю
20 сен 21, 17:49    [22373784]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
zedxxx
Member

Откуда:
Сообщений: 140
Док
Получаем два странных уведомления

Вот про это тикет: https://github.com/LongDirtyAnimAlf/fpcupdeluxe/issues/429

И как выясняется, если из-под win64 билдить кросскомпилятор для win32 мы в итоге получаем эмуляцию Extended типа (которая работает медленно и не точно). И что на самом деле, всё надо делать ровно наоборот - ставить win32 компилятор и им билдить для win64.

Только у меня после этого Lazarus начинает с ума сходить и говорит, что fpc не поддерживает win64 (хотя кросскомпилятор установлен!), а если попытаться сбилдить проект не смотря на сообщение, всё собирается и работает нормально. Какая-то непонятная фигня...
18 ноя 21, 09:52    [22397306]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 27313
Я всегда говорили и буду говорить: {разрабатывать и} компилировать на лазарусе нужно на той платформе, где приложение будет использоваться.
18 ноя 21, 10:39    [22397319]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Fr0sT-Brutal
Member

Откуда:
Сообщений: 985
У них вроде всегда было основное х32, и компиль, и среда, а x64 через кросс.
18 ноя 21, 11:30    [22397351]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 5302
zedxxx
И как выясняется, если из-под win64 билдить кросскомпилятор для win32 мы в итоге получаем эмуляцию Extended типа (которая работает медленно и не точно). И что на самом деле, всё надо делать ровно наоборот - ставить win32 компилятор и им билдить для win64.

А отключить софтовую эмуляцию в fpcupdeluxe пробовал?
18 ноя 21, 11:51    [22397371]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Док
Member

Откуда: Казань
Сообщений: 7217
Kazantsev Alexey
А отключить софтовую эмуляцию в fpcupdeluxe пробовал?

это где?
18 ноя 21, 23:20    [22397739]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 5302
Док,

Setup+ | Miscellaneous settings | [x] Enable software emulation of 80 bit floats.
18 ноя 21, 23:28    [22397743]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
asutp2
Member

Откуда: Тюмень
Сообщений: 893
wadman
Я всегда говорили и буду говорить: {разрабатывать и} компилировать на лазарусе нужно на той платформе, где приложение будет использоваться.
Серьезно? Приложение для мобилок тоже на мобилках разрабатывать и компилировать?
При всех недостатках IDE от делфи ее возможность работать на виндах, разрабатывать и компилить под все поддерживаемые платформы очень удобно для разработчика.

Сообщение было отредактировано: 19 ноя 21, 10:47
19 ноя 21, 10:46    [22397840]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 27313
asutp2
Серьезно? Приложение для мобилок тоже на мобилках разрабатывать и компилировать?

Для мобилок есть более приятные средства разработки. Лазарус тут для "посмотреть" и я его в этом плане не рассматриваю.
19 ноя 21, 11:50    [22397872]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Док
Member

Откуда: Казань
Сообщений: 7217
wadman
asutp2
Серьезно? Приложение для мобилок тоже на мобилках разрабатывать и компилировать?

Для мобилок есть более приятные средства разработки. Лазарус тут для "посмотреть" и я его в этом плане не рассматриваю.

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

По поводу нативной платформы - некоторые контроллы, свойства которых ты задаешь программно, рисуются некорректно, если собирать экзешник на другой ОСи ("фомам неверующим" могу попытаться собрать тестовый проект, если ситльно надо).

Лазарус для мобилок, ИМХО, как вилка для копания траншеи - долго, нудно, геморройно.
20 ноя 21, 10:30    [22398270]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 5302
Док
могу попытаться собрать тестовый проект, если ситльно надо

Давай, хочу на это посмотреть.
20 ноя 21, 10:43    [22398273]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
asutp2
Member

Откуда: Тюмень
Сообщений: 893
Неужеди в лазарусе не могут сделать аналог делфовского paserver? тогда и прыгать между разными IDE не надо, и компиляция будет из родной ОС (раз уж в лазарусе проблемы сборки для чужых ОС)
20 ноя 21, 13:56    [22398303]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 5302
asutp2,

paserver это средство деплоя и отладки, причём тут кросс-компиляция?
20 ноя 21, 14:30    [22398308]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
rgreat
Member

Откуда:
Сообщений: 7024
Kazantsev Alexey,

В том что без наличия нормального средства удаленного деплоя и отладки кросскомпиляция не шибко удобна.

Сообщение было отредактировано: 20 ноя 21, 14:32
20 ноя 21, 14:32    [22398310]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 5302
rgreat
без наличия нормального средства удаленного деплоя и отладки кросскомпиляция не шибко удобна.

Удобство штука субъективная. Кому-то и не обвешенная плагинами IDE неудобна.

Сообщение было отредактировано: 20 ноя 21, 14:40
20 ноя 21, 14:39    [22398312]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
zedxxx
Member

Откуда:
Сообщений: 140
Kazantsev Alexey
zedxxx
И как выясняется, если из-под win64 билдить кросскомпилятор для win32 мы в итоге получаем эмуляцию Extended типа (которая работает медленно и не точно). И что на самом деле, всё надо делать ровно наоборот - ставить win32 компилятор и им билдить для win64.

А отключить софтовую эмуляцию в fpcupdeluxe пробовал?

Попробовал, компиляция кросс-компилятора завершается ошибкой:
fpcdefs.inc(382,2) Error: User defined: Cross-compiling from systems without support for an 80 bit extended floating point type to i386 is not yet supported at this time

В сорцах там вот такая заглушка стоит:
{$if not defined(FPC_HAS_TYPE_EXTENDED) and defined(i386)}
{$ifndef FPC_SOFT_FPUX80}
{$error Cross-compiling from systems without support for an 80 bit extended floating point type to i386 is not yet supported at this time }
{$endif}
{$endif}


Сообщение было отредактировано: 20 ноя 21, 15:56
20 ноя 21, 15:54    [22398332]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54790

Казалось бы: какая разница кросс-компилятору что там поддерживает хостовая
платформа, он же всё равно генерирует набор байт, который не будет на ней
исполняться...

Posted via ActualForum NNTP Server 1.5

20 ноя 21, 15:57    [22398334]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
asutp2
Member

Откуда: Тюмень
Сообщений: 893
Kazantsev Alexey
asutp2,

paserver это средство деплоя и отладки, причём тут кросс-компиляция?
Это я к тому, что утверждается о проблемах компиляции у лазаря в чужой ОС. Ок, раз есть такая проблема, так почему не запилить тулзу, которая устанавливается на целевой ОС и компиляция идет через нее?
20 ноя 21, 16:05    [22398337]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 5302
zedxxx
Попробовал, компиляция кросс-компилятора завершается ошибкой

Хм, из-под линукса всё компилируется на ура.

zedxxx
И как выясняется, если из-под win64 билдить кросскомпилятор для win32 мы в итоге получаем эмуляцию Extended типа (которая работает медленно и не точно). И что на самом деле, всё надо делать ровно наоборот - ставить win32 компилятор и им билдить для win64.

Установил лазарь x64 на винду и собрал кросс-компилятор под Win32 (эмуляцию не отключал). Код с Extended компилируется в машинные команды, никакой эмуляции.
Твой код:
uses
  Math;

var
  D: Double;
  E: Extended;
begin
  D := Pi;
  Writeln(D);

  E := Pi;
  Writeln(E);

  Writeln('Double:   ', SizeOf(D) );
  Writeln('Extended: ', SizeOf(E) );
end. 

Результат кросс-компилятора для i386:

3.1415926535897931E+000
3.14159265358979323851E+0000
Double: 8
Extended: 10
21 ноя 21, 01:38    [22398510]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 5302
Картинка с другого сайта.
21 ноя 21, 01:58    [22398514]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
zedxxx
Member

Откуда:
Сообщений: 140
Kazantsev Alexey,

Ну да, я в таком же удивлении. Надо разработчиков fpc спрашивать где и в каких случаях у них эмуляция происходит.
21 ноя 21, 08:28    [22398528]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Док
Member

Откуда: Казань
Сообщений: 7217
Kazantsev Alexey
Док
могу попытаться собрать тестовый проект, если ситльно надо

Давай, хочу на это посмотреть.

Ты должен помнить, как я сетовал, что, если задавать размеры контрола в runtime (кнопки в моем случае) через GetPreferredSize, то на винде (где собираются нативно) они рисуются корректно, а на линуксе - нет.

Увы, на простеньком проекте не воспроизвелось. В прошлый раз (когда жаловался) кнопки в винде были квадратные, на линуксе - прямоугольные. Но там компонентов на форме была куча :(
21 ноя 21, 22:49    [22398825]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 5302
Док
Ты должен помнить, как я сетовал, что, если задавать размеры контрола в runtime (кнопки в моем случае) через GetPreferredSize, то на винде (где собираются нативно) они рисуются корректно, а на линуксе - нет.

Я это помню (у тебя была проблема в том, что хендл едита не был инициализирован на момент запроса GetPreferredSize), только причём здесь кросс-компиляция? Ты же не думаешь, что собери ты этот код из-под линукса у тебя всё заработало бы?
21 ноя 21, 23:26    [22398836]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 5302
Kazantsev Alexey
(у тебя была проблема в том, что хендл едита не был инициализирован на момент запроса GetPreferredSize)

Не совсем так, но сути это не меняет. Особенности виджетсетов отношения ко кросс-компиляции не имеют. Вот та тема.
22 ноя 21, 02:18    [22398853]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Док
Member

Откуда: Казань
Сообщений: 7217
Kazantsev Alexey,

если я правильно помню, то для правильной отрисовки кнопки в приложении я должен был открыть сначала форму в дизайнере Лазаря. Если я просто кросскомпилил приложение и запускал на другой платформе, то кнопки рисовались неправильно. Так что, я правильно помню :)
23 ноя 21, 13:14    [22399643]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 5302
Док,

Я же не просто так тебе писал про AutoSize. Ты пытаешься привязать размер кнопки к размеру едита. У едита выставлено свойство AutoSize - True. То есть, высота едита может меняться от платформы к платформе (и даже в рамках одной платформы). Теперь смотри что происходит. Ты дизайнишь гуй на винде, и лазарь сохраняет в lfm свойства компонентов. Свойства Left,Top,Width,Height не имеют дефолтных значений, поэтому сохраняются всегда, даже если у контрола AutoSize - True. Таким образом, на винде у тебя сохраняется дефолтная высота высота виндового едита. Далее, в событии OnCreate ты присваиваешь кнопкам высоту едита, но штука в том, что чтение позиции и размера контрола это просто чтение сохранённого значения (этой операции не достаточно для актуализации значения при установленном в истину AutoSize). Таким образом, на винде ты всё равно получаешь корректное значение, т.к. дизайнил тоже на винде и редактор сохранил дефолтное значение высоты виндового едита. Но на другой платформе, где высота едита может отличаться, у тебя не меняется размер кнопок (т.е. он меняется, но на сохранённый в lfm размер виндового едита) т.к. к моменту, когда ты читаешь свойства едита ещё не отработали механизмы актуализирующие размеры контрола. Когда ты открываешь форму на другой платформе, редактор перезаписывает размеры едитов и у тебя всё "начинает работать". Надеюсь, теперь понятно, что дело не в кросс-компиляции?
23 ноя 21, 14:43    [22399690]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Док
Member

Откуда: Казань
Сообщений: 7217
Kazantsev Alexey
Док,

...лазарь сохраняет в lfm свойства компонентов

да, я про это совсем забыл :(
23 ноя 21, 14:51    [22399696]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
svd
Member

Откуда:
Сообщений: 223
так как работаю с git, то чаще компиляцию всех версий делал в командной строке.

Пример тут. Просто скопировал все возможные активные конфигурации в отдельный каталог, при запуске коммандного файла make_all.cmd тупо меняю конфигурацию и вызываю lazbuild.exe.
26 ноя 21, 11:29    [22401142]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus - Кроссплатформенность  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 5302
svd
Просто скопировал все возможные активные конфигурации в отдельный каталог, при запуске коммандного файла make_all.cmd тупо меняю конфигурацию и вызываю lazbuild.exe.

Зачем это делать при наличии режимов сборки?

Сообщение было отредактировано: 26 ноя 21, 13:42
26 ноя 21, 13:42    [22401259]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2 3      [все]
Все форумы / Delphi Ответить