powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / CrossVCL впечатления
25 сообщений из 79, страница 1 из 4
CrossVCL впечатления
    #39581911
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробую в этой теме описать свои впечатления и найденные грабли при портировании GUI приложения на Linux с использованием библиотеки CrossVCL

Часть 1. Знакомство.

Работа ведется с дистрибутивом Ubuntu Desktop 17.10. Сам дистрибутив был скачан отсюда https://www.ubuntu.com/desktop/1710

Первоначально хотелось перевести простой, но реальный проект. Особенности проекта: однопоточный VCL клиент БД. Компоненты доступа IBX (была надежда, что под линуксом встанут без проблем), внешние компоненты - VirtualTreeView (тут 50/50 взлетит или нет) и MSXML планировалось переписать на родной делфевый TXMLDocument. Проект собирался в XE3 на платформе Win32.

Для начала я попробовал просто откомпилировать в Tokyo на платформе Win32. Получил набор сообщений об изменившихся заголовках. Сообщений было три типа
1) В TDataSet изменились описания некоторых protected методов, а потому мой наследник отказывался компилироваться
2) В IStream изменились var параметры методов с LargeInt (Int64) на LargeUInt (UInt64)
3) В IBX внутренние свойства SqlVar изменили тип с AnsiString на string

Эти ошибки я поправил и под Win32 проект собрался. После этого я запустил компиляцию по Linux и отгреб сообщение о неизвестном типе AnsiString. После этого я понял, что все не так просто и для переноса придется попотеть.


С уважением, Vasilisk
...
Рейтинг: 0 / 0
CrossVCL впечатления
    #39581925
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_После этого я запустил компиляцию по Linux и отгреб сообщение о неизвестном типе AnsiString
Для справки: в некстгене они выкинули поддержку AnsiString, но в 10.1 одумались и вернули, сократив её до двух поддерживаемых типов: RawByteString и Utf8String. С этим портирование старого кода на некстген будет проще.
...
Рейтинг: 0 / 0
CrossVCL впечатления
    #39581926
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_После этого я запустил компиляцию по Linux и отгреб сообщение о неизвестном типе AnsiString. После этого я понял, что все не так просто и для переноса придется попотеть.
Меняй на RawByteString.
...
Рейтинг: 0 / 0
CrossVCL впечатления
    #39581959
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Часть 2. Компилируем

Тогда было принято решение посмотреть пока тестовый проект. В проект был положен TDBGrid и кнопка с действием DataSet.Open. В качестве датасета был выбран все тот же IBX (TIBDataSet). Компилятор сказал, что модуля IBExternals он знать не знает. Возможно, это следствие моей криво-крякнутой студии, потому разбирание с этим вопросом я пока отложил, а прицепил грид к FireDac. И тут началось.

Первая ошибка, с которой я столкнулся, это сообщение
[DCC Error] E2597 C:\Program Files (x86)\Embarcadero\Studio\19.0\bin\ld-linux.exe: error: cannot find -lgcc_s
C:\Program Files (x86)\Embarcadero\Studio\19.0\bin\ld-linux.exe: error: cannot find -lc
C:\Program Files (x86)\Embarcadero\Studio\19.0\bin\ld-linux.exe: error: cannot find -ldl
C:\Program Files (x86)\Embarcadero\Studio\19.0\bin\ld-linux.exe: error: cannot find -lpthread
C:\Program Files (x86)\Embarcadero\Studio\19.0\bin\ld-linux.exe: error: cannot find -lm
После гугления нашел, что не хватает пакета gcc-6
Код: sql
1.
apt-get install gcc-6

и обновления SDK ошибка поменялась
ld-linux.exe: error: cannot find -lGLна сайте Крюкова нашел рекомендацию. Поставить пакет libgl1-mesa-dev. После установки ошибка изменилась
[DCC Error] E2597 C:\Program Files (x86)\Embarcadero\Studio\19.0\bin\ld-linux.exe: error: cannot find -lz
c:\program files (x86)\embarcadero\studio\19.0\lib\Linux64\release\System.ZLib.o:System.ZLib:function System::Zlib::deflate(System::Zlib::z_stream&, int): error: undefined reference to 'deflate'
c:\program files (x86)\embarcadero\studio\19.0\lib\Linux64\release\System.ZLib.o:System.ZLib:function System::Zlib::deflateEnd(System::Zlib::z_stream&): error: undefined reference to 'deflateEnd'
c:\program files (x86)\embarcadero\studio\19.0\lib\Linux64\release\System.ZLib.o:System.ZLib:function System::Zlib::inflate(System::Zlib::z_stream&, int): error: undefined reference to 'inflate'
c:\program files (x86)\embarcadero\studio\19.0\lib\Linux64\release\System.ZLib.o:System.ZLib:function System::Zlib::inflateEnd(System::Zlib::z_stream&): error: undefined reference to 'inflateEnd'
c:\program files (x86)\embarcadero\studio\19.0\lib\Linux64\release\System.ZLib.o:System.ZLib:function System::Zlib::inflateReset(System::Zlib::z_stream&): error: undefined reference to 'inflateReset'
c:\program files (x86)\embarcadero\studio\19.0\lib\Linux64\release\System.ZLib.o:System.ZLib:function System::Zlib::crc32(unsigned long, unsigned char*, unsigned int): error: undefined reference to 'crc32'
c:\program files (x86)\embarcadero\studio\19.0\lib\Linux64\release\System.ZLib.o:System.ZLib:function System::Zlib::deflateInit2_(System::Zlib::z_stream&, int, int, int, int, int, char*, int): error: undefined reference to 'deflateInit2_'
c:\program files (x86)\embarcadero\studio\19.0\lib\Linux64\release\System.ZLib.o:System.ZLib:function System::Zlib::inflateInit2_(System::Zlib::z_stream&, int, char*, int): error: undefined reference to 'inflateInit2_'Крюков сказал, что с проблемами zlib это к Эмбаркадере, но у него вывесили список пакетов, после установки которых все собралосьsudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev libglfw3-dev libgles2-mesa-dev

После небольших танцев с PAServer (почему-то не резолвилось имя Linux машины) все задеплоилось на удаленную машину
...
Рейтинг: 0 / 0
CrossVCL впечатления
    #39581961
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatМеняй на RawByteString.Пока это не есть проблема
...
Рейтинг: 0 / 0
CrossVCL впечатления
    #39581968
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_После небольших танцев с PAServer (почему-то не резолвилось имя Linux машины) все задеплоилось на удаленную машинуЗапустилось? :)
...
Рейтинг: 0 / 0
CrossVCL впечатления
    #39581972
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatЗапустилось? :)Будут еще части :)
...
Рейтинг: 0 / 0
CrossVCL впечатления
    #39581978
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему бы не собрать сначала 64-версию под nextgen компилятор (исправив косяки в коде), а потом уже переносить под линукс?
...
Рейтинг: 0 / 0
CrossVCL впечатления
    #39581993
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDiА почему бы не собрать сначала 64-версию под nextgen компилятор (исправив косяки в коде), а потом уже переносить под линукс?Под виндой nextgen извращения не работают.

авторAny code compiled for Windows that is marked with NEXTGEN will be ignored.
...
Рейтинг: 0 / 0
CrossVCL впечатления
    #39582006
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_вывесили список пакетов, после установки которых все собралосьsudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev libglfw3-dev libgles2-mesa-devВот за вот эту красоту я и не люблю линукс...
...
Рейтинг: 0 / 0
CrossVCL впечатления
    #39582018
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatВот за вот эту красоту я и не люблю линукс...
Ну да, в ендюзерском дистре не установлены девелоперские пакеты. Это то же самое, что нелюбить винду из-за неустановленного Windows SDK. Глупости какие... Кроме того, не помню, чтобы абракадабра давала инструкции относительно сборки в окружении 17.10, которая, кстати, даже не LTS, а промежуточная версия для отладки новой функциональности.
...
Рейтинг: 0 / 0
CrossVCL впечатления
    #39582027
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyНу да, в ендюзерском дистре не установлены девелоперские пакеты. Это то же самое, что нелюбить винду из-за неустановленного Windows SDK. Глупости какие... Кроме того, не помню, чтобы абракадабра давала инструкции относительно сборки в окружении 17.10, которая, кстати, даже не LTS, а промежуточная версия для отладки новой функциональности.Сравни сложность по установке какого-нибуть Visual C++ Runtime из 1-го файла и игры в "угадай и собери нужные пакеты" под текущую версию линукса (чтобы было веселей - в offline режиме).
...
Рейтинг: 0 / 0
CrossVCL впечатления
    #39582029
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Часть 3. Запускаем

После деплоя и попытки запуска я получил ошибкуNo protocol specifiedпоначалу я подумал, что это какие-то грабли при коннекте к БД, но потом нашел, что это проблема запуска GUI приложения из под sudo. Здесь были описаны пути решения, но т.к. я под sudo оказался случайно (забыл выйти после установки пакетов), то я просто вышел из этого режима и приложение запустилось (к слову, сегодня я не смог повторить эту ошибку. Сегодня все запускается и так, и так)

После запуска, при попытке коннекта, приложение ожидаемо не нашло клиента Interbase. Отдельного пакета с клиентом я не нашел, поэтому скачал с Эмбаркадеры полную версию InterbaseXE7. Переписал инсталляху на линукс-машину, распаковал, запустил и установил Client Only

При попытке коннекта к базе (база на удаленном сервере), я получил ошибку, что компьютера с таким именем не существует (таки где-то криво настроен нейм-резолвинг Windows-Linux). Но самое плохое, что это сообщение было выведено крякозябрами (вывод юникода в анси кодировке). После изменения в свойствах соединения имени сервера на его IP-адрес, к базе я подключился и данные отобразились в гриде. Но вся кирилица отборазилась в виде вопросов. В Win32 версии все отображается корректно. Пока на этом останавливаюсь и буду искать способ решения этой проблемы
...
Рейтинг: 0 / 0
CrossVCL впечатления
    #39582036
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatСравни сложность по установке какого-нибуть Visual C++ Runtime из 1-го файла и игры в "угадай и собери нужные пакеты" под текущую версию линукса (чтобы было веселей - в offline режиме).
dev-пакеты, это не аналог библиотек сишного рантайма, это как-раз аналог SDK, в котором лежат .lib и .obj для сборки. И я тебе ответственно заявляю, что установить любые пакеты в линуксе сильно проще, чем те же редистрибутаблы сишные, которые тоже нужно ещё найти, и вообще понять, какая версия нужна софту. Про танцы с sdk вообще молчу. В тоже время, если следовать инструкциям абракадабры, и ставить LTS (а текущий LTS - 16.04) версию с Ubuntu SDK, проблем с компиляцией под линукс нет и никакие доустановки пакетов не требуются. ССЗБ, короче.
...
Рейтинг: 0 / 0
CrossVCL впечатления
    #39582041
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexeydev-пакеты, это не аналог библиотек сишного рантайма, это как-раз аналог SDK, в котором лежат .lib и .obj для сборки
Это тот, который автоматом по-дефолту ставится со студией? :)
...
Рейтинг: 0 / 0
CrossVCL впечатления
    #39582042
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexeydev-пакеты, это не аналог библиотек сишного рантайма, это как-раз аналог SDK, в котором лежат .lib и .obj для сборки. И я тебе ответственно заявляю, что установить любые пакеты в линуксе сильно проще, чем те же редистрибутаблы сишныеЭто верно разве что для обожающих консольку "красноглазиков".

, которые тоже нужно ещё найти, и вообще понять, какая версия нужна софту.99% софта под виндой не требует поиска дистрибутивов и работает "из коробки".

Про танцы с sdk вообще молчу.Дык а чего там говорить то? Все ставиться вместе со средой. Автоматом. И пофиг какая там версия винды (если она еще поддерживается, конечно).

В тоже время, если следовать инструкциям абракадабры, и ставить LTS (а текущий LTS - 16.04) версию с Ubuntu SDK, проблем с компиляцией под линукс нет и никакие доустановки пакетов не требуются. ССЗБ, короче.Так и вижу что Студия или Дельфя требуют для безгеморойной работы только Win8.1 (причем именно ver. 6.3.9200).
...
Рейтинг: 0 / 0
CrossVCL впечатления
    #39582045
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpЭто тот, который автоматом по-дефолту ставится со студией? :)
С моей студией не ставится.
...
Рейтинг: 0 / 0
CrossVCL впечатления
    #39582050
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyС моей студией не ставится.
...
Рейтинг: 0 / 0
CrossVCL впечатления
    #39582057
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatЭто верно разве что для обожающих консольку "красноглазиков".
Это верно для любого, кто хоть раз попробовал. Теоретикам не понять.

rgreat99% софта под виндой не требует поиска дистрибутивов и работает "из коробки".
Да-да, расскажи мне, а то я за 18 виндовых лет мало чего видел...

rgreatДык а чего там говорить то? Все ставиться вместе со средой. Автоматом. И пофиг какая там версия винды (если она еще поддерживается, конечно).
Не ставится. С шелом не ставится, например. И про любую, версию винды не звизди, сейчас SDK десяточку хочет.

rgreatТак и вижу что Студия или Дельфя требуют для безгеморойной работы только Win8.1 (причем именно ver. 6.3.9200).
Ты правда не понимаешь о чём тебе пишут? Речь не о том, что софт будет работать только с определённой версией дистра - работать он будет практически везде - речь о том, что девелоперских пакетов, которые нужны для сборки софта, нет в десктопном дистре по дефолту. Для этого нужно ставить SDK, ну или вот так ручками ковыряться в зависимостях. Как ставить на LTS вендор объясняет, а кто желает гемороя тот его получает, обычно.
...
Рейтинг: 0 / 0
CrossVCL впечатления
    #39582058
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А кто скажет, удаленная отладка на Линуксе не работает, что ли?
...
Рейтинг: 0 / 0
CrossVCL впечатления
    #39582060
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_А кто скажет, удаленная отладка на Линуксе не работает, что ли?
У меня работала.

Но я на 16.04 пробовал.

Ты PAServer запустил?
...
Рейтинг: 0 / 0
CrossVCL впечатления
    #39582061
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatТы PAServer запустил?Конечно. Я же через него деплою
...
Рейтинг: 0 / 0
CrossVCL впечатления
    #39582062
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatТы PAServer запустил?Я даже профиль не могу выбрать, когда указываю использование Linux отладчика
...
Рейтинг: 0 / 0
CrossVCL впечатления
    #39582066
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyЭто верно для любого, кто хоть раз попробовал. Теоретикам не понять.Раз 5 приходилось. Раза 3 даже получилось.
Но тут как я и говорил это "красноглазик-френдли" технология. Я видимо недостаточно think different.

Да-да, расскажи мне, а то я за 18 виндовых лет мало чего видел...Ну давай вместе понастольгируем по приколам Win ME.

Не ставится. С шелом не ставится, например. И про любую, версию винды не звизди, сейчас SDK десяточку хочет.
1. Дельфям SDK вообще не нужен.
2. MS VS ставит все что нужно само, при условии что выбранная версия студии вообще поддерживает нужную винду.

Ты правда не понимаешь о чём тебе пишут? Речь не о том, что софт будет работать только с определённой версией дистра - работать он будет практически везде - речь о том, что девелоперских пакетов, которые нужны для сборки софта, нет в десктопном дистре по дефолту. Для этого нужно ставить SDK, ну или вот так ручками ковыряться в зависимостях. Как ставить на LTS вендор объясняет, а кто желает гемороя тот его получает, обычно.А ты понимаешь?
Почему в винде можно легко найти гуглем, скачать и установить дистрибутив в 1м файле и все заработает, а в линухе нет?
...
Рейтинг: 0 / 0
CrossVCL впечатления
    #39582068
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,
...
Рейтинг: 0 / 0
25 сообщений из 79, страница 1 из 4
Форумы / Delphi [игнор отключен] [закрыт для гостей] / CrossVCL впечатления
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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