IBExpert под Linux и вопрос совместимости gds32
Модераторы: kdv, Alexey Kovyazin
IBExpert под Linux и вопрос совместимости gds32
Дома и на работе Linux. Все хорошо, но под него нет такой замечательной проги, как IBExpert. Запускаю под VMWare, но держать Варю и запускать ее из-за пары прог не хочется. Решил заточить под wine.
После серий экспериментов эксперт стал запускаться, но с базой не конектится . Заходим в меню "Диагностика соединений". Ping идет, соединение с портом 3050 и gds идет. А вот при подсоединении к базе - ступор. Даже ни одного пакета на порт 3050 не отправляется.
Стал расследовать это дело. Оказалось - проблема в advapi32. Не все его функции реализованы в wine, а настоящий advapi32 подсунуть нельзя (в других местах вылетает). Подсунул эксперту embedded - работает. Причем шустро. Фетч в полмиллиона записей раз в 5 быстрее. Но embedded мало, нужно и к серверам соединяться.
Мельком взглянул на код. Так вроде обращение к advapi только в 2 местах. Решил поискать более ранние версии. До этого пробовал gds'ы от FB 1.5, 2 и IB 6.5.
Вопрос - до какой версии можно "опуститься" при поиске? На серверах FB1.5 и 2 (для тестов), диалект 3 почти везде.
P.S. Можно было попробовать "выкусить" оращения к advapi из исходников FB. Но нет полноценной винды и Developer studio. Да и смотреть придется код внимательнее. Неизвестно ведь к чему это приведет.
После серий экспериментов эксперт стал запускаться, но с базой не конектится . Заходим в меню "Диагностика соединений". Ping идет, соединение с портом 3050 и gds идет. А вот при подсоединении к базе - ступор. Даже ни одного пакета на порт 3050 не отправляется.
Стал расследовать это дело. Оказалось - проблема в advapi32. Не все его функции реализованы в wine, а настоящий advapi32 подсунуть нельзя (в других местах вылетает). Подсунул эксперту embedded - работает. Причем шустро. Фетч в полмиллиона записей раз в 5 быстрее. Но embedded мало, нужно и к серверам соединяться.
Мельком взглянул на код. Так вроде обращение к advapi только в 2 местах. Решил поискать более ранние версии. До этого пробовал gds'ы от FB 1.5, 2 и IB 6.5.
Вопрос - до какой версии можно "опуститься" при поиске? На серверах FB1.5 и 2 (для тестов), диалект 3 почти везде.
P.S. Можно было попробовать "выкусить" оращения к advapi из исходников FB. Но нет полноценной винды и Developer studio. Да и смотреть придется код внимательнее. Неизвестно ведь к чему это приведет.
-
- Заслуженный разработчик
- Сообщения: 1436
- Зарегистрирован: 15 сен 2005, 09:05
ИМХО не совсем. Часть виндовых библиотек действительно "ненастоящие", а вайновские. Но для виндовых программ подсовывается заглушка, представляющая собой настоящую (по формату) виндовую DLL. А вот обращения к ней перехватываются и направляются в специально заточенные под это линуксовые (ELF) библиотеки wine.Dimitry Sibiryakov писал(а):А почему бы не попробовать заставить работать Эксперта с нативным линуксовым fbclient-ом? Насколько я помню, wine такое позволяет.
Правильно, позволяет он все делать. Нужно маны читать, WINE когда линкует DLL смотрит что это за файл ELF иди MZ, после этого линкует по своим правилам и нормально линкует.Andy117 писал(а):ИМХО не совсем.Dimitry Sibiryakov писал(а):А почему бы не попробовать заставить работать Эксперта с нативным линуксовым fbclient-ом? Насколько я помню, wine такое позволяет.
Делаеш симфолическую ссылку gds32.dll на fbclient.so и все работает. Я так запускал IBAdmin 3 версии. Для IBExpert там другая проблема была что он не мог отобразить свое дерево у IBExpert там хирая компонента используется.
Посмотри в сторону SQuirreL SQL Client, он позволяет многие вещи делать. Хотя не такой удобный как IBExpert.
Да, ты прав. Позволяет.eugeney писал(а):Правильно, позволяет он все делать. Нужно маны читать, WINE когда линкует DLL смотрит что это за файл ELF иди MZ, после этого линкует по своим правилам и нормально линкует.
Может так в ранней версии wine можно было? Там поддерживались 4 типа DLL - native, buildin, elfdll и so. А сейчас только native, buildin. И теперь, вроде как, нужно иметь .spec файл с описаниями экпортируемых функций, делать врапер... И т.д. и т.п.eugeney писал(а):Делаеш симфолическую ссылку gds32.dll на fbclient.so и все работает. Я так запускал IBAdmin 3 версии.
Скачал я для начала исходники последнего (0.9.14) вайна. Скомпилил его. Соединения нет, но уже не входит в ступор, а ругается. Это уже хорошо. Короче, не буду описывать все свои мытарства, но я его победил!. Работает.
Все отлично отображается. Нужно только dcom98 установить и для экперта указать, что ole библиотеки будут nativeeugeney писал(а): Для IBExpert там другая проблемма была что он не мог отобразить свое дерево у IBExpert там хирая компонента используется.