воскресенье, 26 апреля 2020 г.

Delphi 10.3.3 + Linux

Решил попробовать еще раз - что там как на Линуксе.
Сделал виртуалку с Mint 19.3 (всё по умолчанию)
поставил пакет open-vm-tools. добавил общую папку, скопировал Paserver из поставки
Paserver запустился

Запустил создание SDK в Delphi - поругалось на дубликаты заголовочников, на что я ничтоже сумняшеся сказал - переписывай нафиг.

Простейший консольный проект не скомпилировался - не смог найти модули
  C:\Program Files (x86)\Embarcadero\Studio\20.0\bin\ld-linux.exe: error: cannot find -ldl
  C:\Program Files (x86)\Embarcadero\Studio\20.0\bin\ld-linux.exe: error: cannot find -lpthread
  C:\Program Files (x86)\Embarcadero\Studio\20.0\bin\ld-linux.exe: error: cannot find -lm

чё за фигня - непонятно.
Решил попробовать с рекомендуемой Убунтой.
Сделал виртуалку с Kubuntu 18.04 (так же всё по умолчанию)
запустил PAServer

сделал SDK - такая же фигня.

Стал копать в пакетах - ополучалось что нет заголовочников для gcc
посмотрел - в списка пакетов у меня есть gcc-7-base
поставил к нему пает libgcc-7-dev
Обновил SDK - проект скомпилировался

Но вот при запуске уже среда  ругалась на отсутствие коннекта с виртуалкой Mint (я её выключил)

Оказалось, что в настройках отделяются SDK и Connection Profile, и каждый из них надо отдельно задавать "По умолчанию" - в файле проекта это не настраивается - только в IDE.


при запуске из среды, файл проекта сохраняется в каталоге
/home/(user)/PAServer/scratch-dir/user1-Kubuntu 18.04/(project name)/

А вот инфа о простом консольном проекте
program LinuxTest;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils;

begin
  try
    writeln('Это линукс-тест من يحكم ألمانيا، وما الذي يشغل السياسة');
    writeln('Press Enter to continue');
    Readln;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.
из systemmonitor
Summary

The process LinuxTest (with pid 10949) is using approximately 5.3 MB of memory.
It is using 4.1 MB privately, and a further 5.6 MB that is, or could be, shared with other programs.
Dividing up the shared memory between all the processes sharing that memory we get a reduced shared memory usage of 1270.0 KB. Adding that to the private usage, we get the above mentioned total memory footprint of 5.3 MB.
Library Usage

The memory usage of a process is found by adding up the memory usage of each of its libraries, plus the process's own heap, stack and any other mappings.


Private
1680 KB    /usr/lib/x86_64-linux-gnu/libicudata.so.60.2
988 KB    /usr/lib/x86_64-linux-gnu/libicui18n.so.60.2
748 KB    /home/vova/PAServer/scratch-dir/user1-Kubuntu 18.04/LinuxTest/LinuxTest
268 KB    /usr/lib/x86_64-linux-gnu/libicuuc.so.60.2
232 KB    [heap]
80 KB    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25
56 KB    /usr/lib/locale/locale-archive
36 KB    /lib/x86_64-linux-gnu/libm-2.27.so
36 KB    /lib/x86_64-linux-gnu/libc-2.27.so
24 KB    [stack]
12 KB    /lib/x86_64-linux-gnu/libpthread-2.27.so
12 KB    /lib/x86_64-linux-gnu/ld-2.27.so
8 KB    /lib/x86_64-linux-gnu/libdl-2.27.so
8 KB    /lib/x86_64-linux-gnu/libgcc_s.so.1

Shared
1472 KB    /lib/x86_64-linux-gnu/libc-2.27.so
1120 KB    /usr/lib/x86_64-linux-gnu/libicuuc.so.60.2
1004 KB    /usr/lib/x86_64-linux-gnu/libicui18n.so.60.2
728 KB    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25
484 KB    /lib/x86_64-linux-gnu/libm-2.27.so
360 KB    /usr/lib/locale/locale-archive
152 KB    /lib/x86_64-linux-gnu/ld-2.27.so
148 KB    /usr/lib/x86_64-linux-gnu/libicudata.so.60.2
100 KB    /lib/x86_64-linux-gnu/libpthread-2.27.so
84 KB    /lib/x86_64-linux-gnu/libgcc_s.so.1
44 KB    /home/vova/PAServer/scratch-dir/user1-Kubuntu 18.04/LinuxTest/LinuxTest
12 KB    /lib/x86_64-linux-gnu/libdl-2.27.so
4 KB    [vdso]
Totals

Private    4188 KB    (= 3628 KB clean + 560 KB dirty)
Shared    5712 KB    (= 5712 KB clean + 0 KB dirty)
Rss    9900 KB    (= Private + Shared)
Pss    5458 KB    (= Private + Shared/Number of Processes)
Swap    0 KB


если запустить из оконой консоли (Konsole) - то увидим нормальный юникод:

А вот в настроящей консоли (по крайней мере - из коробки) - всё не так радужно:



Для отдельных модулей потребуется ставить дополнительные пакеты, например, если компилятор выдает ошибку вида

ld-linux.exe: error: cannot find -lc

значит нужно поставить на Линукс пакет build-essential и обновить SDK
а если
ld-linux.exe: error: cannot find -lz
то модуль zlib1g-dev

System.Net.HttpClient - требует пакета libcurl4-openssl-dev

Мне очень помог список пакетов из поста

https://community.idera.com/developer-tools/b/blog/posts/preparing-ubuntu-16-04-lts-for-linux-development-with-upcoming-delphi-10-2---part-2

sudo apt-get install joe wget p7zip-full curl build-essential zlib1g-dev libcurl4-gnutls-dev


Я ставил не все - как я понял, много библиотек уже стоит из коробки

DebugRelease
Размер простого приложения 2MB 816,5 kB
Если добавить Classes 7,8 MB 3 MB
Если добавить еще один датамодуль 7,9 MB 3,0 MB
Если добавить IdHttp 14,9 MB 4,6 MB
Если добавить SSL-handler 14,9 MB 4,6 MB
Если заменить Indy на THTTPClient 12,1 MB 4,5 MB

Кстати, THTTPClient не требует явного указания на использование SSL, прекрасно подключается к сайту с TLS 1.2

Комментариев нет: