powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Lazarus - Кроссплатформенность
18 сообщений из 68, страница 3 из 3
Lazarus - Кроссплатформенность
    #40113328
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неужеди в лазарусе не могут сделать аналог делфовского paserver? тогда и прыгать между разными IDE не надо, и компиляция будет из родной ОС (раз уж в лазарусе проблемы сборки для чужых ОС)
...
Рейтинг: 0 / 0
Lazarus - Кроссплатформенность
    #40113331
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2,

paserver это средство деплоя и отладки, причём тут кросс-компиляция?
...
Рейтинг: 0 / 0
Lazarus - Кроссплатформенность
    #40113333
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey,

В том что без наличия нормального средства удаленного деплоя и отладки кросскомпиляция не шибко удобна.
...
Рейтинг: 0 / 0
Lazarus - Кроссплатформенность
    #40113334
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat
без наличия нормального средства удаленного деплоя и отладки кросскомпиляция не шибко удобна.

Удобство штука субъективная. Кому-то и не обвешенная плагинами IDE неудобна.
...
Рейтинг: 0 / 0
Lazarus - Кроссплатформенность
    #40113344
zedxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
В сорцах там вот такая заглушка стоит:
Код: pascal
1.
2.
3.
4.
5.
{$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}
...
Рейтинг: 0 / 0
Lazarus - Кроссплатформенность
    #40113346
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Казалось бы: какая разница кросс-компилятору что там поддерживает хостовая
платформа, он же всё равно генерирует набор байт, который не будет на ней
исполняться...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Lazarus - Кроссплатформенность
    #40113349
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey
asutp2,

paserver это средство деплоя и отладки, причём тут кросс-компиляция?
Это я к тому, что утверждается о проблемах компиляции у лазаря в чужой ОС. Ок, раз есть такая проблема, так почему не запилить тулзу, которая устанавливается на целевой ОС и компиляция идет через нее?
...
Рейтинг: 0 / 0
Lazarus - Кроссплатформенность
    #40113460
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zedxxx
Попробовал, компиляция кросс-компилятора завершается ошибкой

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

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

Установил лазарь x64 на винду и собрал кросс-компилятор под Win32 (эмуляцию не отключал). Код с Extended компилируется в машинные команды, никакой эмуляции.
Твой код:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
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:
Код: plaintext
1.
2.
3.
 3.1415926535897931E+000
 3.14159265358979323851E+0000
Double:   8
Extended: 10
...
Рейтинг: 0 / 0
Lazarus - Кроссплатформенность
    #40113464
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Lazarus - Кроссплатформенность
    #40113472
zedxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kazantsev Alexey,

Ну да, я в таком же удивлении. Надо разработчиков fpc спрашивать где и в каких случаях у них эмуляция происходит.
...
Рейтинг: 0 / 0
Lazarus - Кроссплатформенность
    #40113620
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey
Док
могу попытаться собрать тестовый проект, если ситльно надо

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

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

Увы, на простеньком проекте не воспроизвелось. В прошлый раз (когда жаловался) кнопки в винде были квадратные, на линуксе - прямоугольные. Но там компонентов на форме была куча :(
...
Рейтинг: 0 / 0
Lazarus - Кроссплатформенность
    #40113622
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док
Ты должен помнить, как я сетовал, что, если задавать размеры контрола в runtime (кнопки в моем случае) через GetPreferredSize, то на винде (где собираются нативно) они рисуются корректно, а на линуксе - нет.

Я это помню (у тебя была проблема в том, что хендл едита не был инициализирован на момент запроса GetPreferredSize), только причём здесь кросс-компиляция? Ты же не думаешь, что собери ты этот код из-под линукса у тебя всё заработало бы?
...
Рейтинг: 0 / 0
Lazarus - Кроссплатформенность
    #40113634
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey
(у тебя была проблема в том, что хендл едита не был инициализирован на момент запроса GetPreferredSize)

Не совсем так, но сути это не меняет. Особенности виджетсетов отношения ко кросс-компиляции не имеют. Вот та тема .
...
Рейтинг: 0 / 0
Lazarus - Кроссплатформенность
    #40114141
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey,

если я правильно помню, то для правильной отрисовки кнопки в приложении я должен был открыть сначала форму в дизайнере Лазаря. Если я просто кросскомпилил приложение и запускал на другой платформе, то кнопки рисовались неправильно. Так что, я правильно помню :)
...
Рейтинг: 0 / 0
Lazarus - Кроссплатформенность
    #40114173
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,

Я же не просто так тебе писал про AutoSize. Ты пытаешься привязать размер кнопки к размеру едита. У едита выставлено свойство AutoSize - True. То есть, высота едита может меняться от платформы к платформе (и даже в рамках одной платформы). Теперь смотри что происходит. Ты дизайнишь гуй на винде, и лазарь сохраняет в lfm свойства компонентов. Свойства Left,Top,Width,Height не имеют дефолтных значений, поэтому сохраняются всегда, даже если у контрола AutoSize - True. Таким образом, на винде у тебя сохраняется дефолтная высота высота виндового едита. Далее, в событии OnCreate ты присваиваешь кнопкам высоту едита, но штука в том, что чтение позиции и размера контрола это просто чтение сохранённого значения (этой операции не достаточно для актуализации значения при установленном в истину AutoSize). Таким образом, на винде ты всё равно получаешь корректное значение, т.к. дизайнил тоже на винде и редактор сохранил дефолтное значение высоты виндового едита. Но на другой платформе, где высота едита может отличаться, у тебя не меняется размер кнопок (т.е. он меняется, но на сохранённый в lfm размер виндового едита) т.к. к моменту, когда ты читаешь свойства едита ещё не отработали механизмы актуализирующие размеры контрола. Когда ты открываешь форму на другой платформе, редактор перезаписывает размеры едитов и у тебя всё "начинает работать". Надеюсь, теперь понятно, что дело не в кросс-компиляции?
...
Рейтинг: 0 / 0
Lazarus - Кроссплатформенность
    #40114178
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey
Док,

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

да, я про это совсем забыл :(
...
Рейтинг: 0 / 0
Lazarus - Кроссплатформенность
    #40115164
svd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так как работаю с git, то чаще компиляцию всех версий делал в командной строке.

Пример тут . Просто скопировал все возможные активные конфигурации в отдельный каталог, при запуске коммандного файла make_all.cmd тупо меняю конфигурацию и вызываю lazbuild.exe.
...
Рейтинг: 0 / 0
Lazarus - Кроссплатформенность
    #40115240
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svd
Просто скопировал все возможные активные конфигурации в отдельный каталог, при запуске коммандного файла make_all.cmd тупо меняю конфигурацию и вызываю lazbuild.exe.

Зачем это делать при наличии режимов сборки?
...
Рейтинг: 0 / 0
18 сообщений из 68, страница 3 из 3
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Lazarus - Кроссплатформенность
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]