OberonCore https://forum.oberoncore.ru/ |
|
Перевод BlackBox под Linux https://forum.oberoncore.ru/viewtopic.php?f=34&t=1280 |
Страница 9 из 15 |
Автор: | igor [ Пятница, 27 Март, 2009 12:34 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Илья Ермаков писал(а): В неграфическом плане вообще не мешает... Сейчас не 1970 год, любое мало-мальски серьёзное приложение не обходится без GUI. Илья Ермаков писал(а): Из ядра выкидывается эта часть. А заодно и все модули, которые импортируют COM. Об этом я и толкую. Система "подсажена" на COM. Илья Ермаков писал(а): Графику вообще переписывать надо, подсистему Host. Этого можно было бы избежать. Но к сожалению не получится, так как некоторые Оберон-лозунги провозглашены только на бумаге, а на деле в Блэкбокс частенько попираются.
|
Автор: | Сергей Губанов [ Пятница, 27 Март, 2009 14:49 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
У нынешних "серьёзных" программ морды вебные. |
Автор: | Сергей Оборотов [ Пятница, 27 Март, 2009 15:35 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Игорь Лоскутов писал(а): Илья Ермаков писал(а): В неграфическом плане вообще не мешает. В графике кое-где вплетено, но тоже отслаивается. Сейчас не 1970 год, любое мало-мальски серьезное приложение не обходится без GUI. |
Автор: | hothing [ Понедельник, 30 Март, 2009 12:29 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Verno. No, dolzhna bit podsistema realizujuschaja COM. V Linuxe takoy net |
Автор: | Сергей Оборотов [ Понедельник, 30 Март, 2009 13:06 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Её в ядре Linux-а и не будет. Подсистема COM организуется в пользовательском режиме. |
Автор: | hothing [ Понедельник, 30 Март, 2009 13:47 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Mozhete predlozhit' realizaciju? |
Автор: | Trurl [ Понедельник, 30 Март, 2009 17:39 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
http://www.ibm.com/developerworks/webse ... xpcom.html |
Автор: | Alexey Veselovsky [ Вторник, 31 Март, 2009 09:27 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Практика показывает что с COM'ом всё на самом деле плохо. Не под виндой. Не под виндой для подобных целей обычно использовалась CORBA, но оно конечно же с MS COM не совместимо никак. Например для OPC, который изначально базировался на DCOM, так и нет нормальных решений под Qnx и Linux. Есть решения только через виндовозную машину, играющую роль гейта между линуксом и OPC-инфраструктурой. Посему OPC Foundation сейчас разрабатывает (почти уже выпустила релиз соотв. спецификаций) OPC UA -- новую версию OPC никак не привязанную к столь замечательной кроссплатформенной, но привязанной к конкретной ОС, технологии как DCOM. Благодаря отвязки от DCOM реализации OPC UA есть уже как минимум на яве, .нет, C++. ОСенезависимые реализации. |
Автор: | Борис Рюмшин [ Вторник, 31 Март, 2009 11:30 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Посему предлагаю забыть про COM совсем. |
Автор: | Димыч [ Среда, 01 Апрель, 2009 00:12 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Можно сказать, что GAPI-парсер готов. Выкладываю на всеобщее обозрение. Скачать GAPI-parser.zip (на народе) Вложение: .Как это все работает описано в блоге. Простите, время пять утра, дублировать здесь не буду |
Автор: | Димыч [ Пятница, 03 Апрель, 2009 02:17 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
УРА!!! ЗАРАБОТАЛО!!! Запустилась программа HelloWorld из под ББ под Linux! Подробности постораюсь сообщить сегодня к вечеру. |
Автор: | Димыч [ Пятница, 03 Апрель, 2009 23:22 ] |
Заголовок сообщения: | Программа Hello world на GTK и ББ |
Выкладываю обещанные подробности В архиве содержится собранная копия ББ, в которой при запуске выполняется код, приводящий к появлению GTK+ окна с одной кнопкой, на которой написано "Hello world" В составе комплекта идет подсистема Gnome, представляющая собой сгенерированные файлы для библиотек GTK, GDK, Pango, Atk, GdkPixbuf. В автоматически сгенерированном коде содержатся определения для процедур (методов), которые принадлежат каким-то объектам. Определения процедур не-методов опущены, поскольку предполагается, что в этом нет необходимости (это рассуждение для проекта Gtk#, где есть возможность использовать C код напрямую). Поэтому для успешного запуска программы потребовалась ручная доводка. В модуль GTK добавлены определения процедур gtk_main, gtk_main_quit. Кроме того, в код модуля GObject добавлены определения процедур g_signal_connect_data. Добавлен модуль GObjectStuff, в котором записаны процедуры g_signal_connect, g_signal_connect_swapped. Эти процедуры в коде оригинальной системы GLib представляют собой #define определения. В ББ пришлось сделать для них отдельный модуль, поскольку у меня не получилось соединить определения библиотечных процедур (без реализации) и процедур модуля (с реализацией). Если знаете как это сделать - подскажите. В итоге имеем приложение, запускаемое при старте ББ. Оно вызывает окно, которое правильно ведет себя в GTK-системе и реагирует на команды пользователя. Уже немало. Основные проблемы, с которыми пришлось столкнуться. 1) Не производится инициализация структуры Kernel.bootInfo или я неправильно понимаю, откуда брать argc и argv. Обращение к Kernel.bootInfo.arg(c|v) гарантированно ведет к трапу. Поэтому вызов gtk_init производится в виде gtk_init(0, 0); Что не есть правильно. Поделитесь, кто может, информацией о старте приложения в Linux, откуда берется командная строка? Что-то про регистр BX в исходниках ББ сказано, но, это все вилами по воде писано. 2) Я не придумал как избежать обращения к SYSTEM при присваивании процедур. В процедуру g_signal_connect одним из параметров передается указатель на процедуру. Причем сигнатура процедуры на момент вызова g_signal_connect значения не имеет, объект разбирается с сигнатурой самостоятельно в процессе работы. Как передать в процедуру указатель на процедуру для процедур разной сигнатуры? Я не придумал. Есть решение сделать объект с одним полем, представляющим собой указатель на процедуру и делать расширение некоего общего предка: Код: GCallback = EXTENSIBLE RECORD END; ... GMyCallback = RECORD(GCallback) callback: PROCEDURE ... END; Но тогда появляются проблемы другого рода - где-то нужна сама процедура, а где-то указател на нее. Кроме того, при работе с модулем появляется дополнительная (промежуточная) сущность. В общем это у меня не получилось, использую SYSTEM.ADR. Можно было бы спрятать использование SYSTEM в отдельный модуль, но это не решает проблему процедур разной сигнатуры. Их же как-то надо подать на вход оберточной процедуры... 3) Явно не хватает автогенерации модулей GLib и GObject. Для того, чтобы получить перевод этих модулей с C на КП, можно использовать утилиту gapi_pp.pl (из Gtk#), которая вытаскивает из C-шных исходников определения процедур, структур, перечислений и прочего. Затем необходимо произвести перевод из этого экстракта в удобоваримую форму или сразу на КП. У меня руки не скоро дойдут до этого. Впрочем, мне пока хватает того, что у меня есть (из ручной сборки). Более того, что это работает :Р Продублировано в блоге. Вложение:
|
Автор: | Info21 [ Пятница, 03 Апрель, 2009 23:39 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Димыч писал(а): УРА!!! ЗАРАБОТАЛО!!! Здорово.
Запустилась программа HelloWorld из под ББ под Linux! |
Автор: | Сергей Оборотов [ Суббота, 04 Апрель, 2009 08:34 ] |
Заголовок сообщения: | Re: Программа Hello world на GTK и ББ |
Димыч писал(а): 1) Не производится инициализация структуры Kernel.bootInfo или я неправильно понимаю, откуда брать argc и argv. Обращение к Kernel.bootInfo.arg(c|v) гарантированно ведет к трапу. Поэтому вызов gtk_init производится в виде gtk_init(0, 0); Что не есть правильно. Поделитесь, кто может, информацией о старте приложения в Linux, откуда берется командная строка? Что-то про регистр BX в исходниках ББ сказано, но, это все вилами по воде писано. BX (EBX точнее) это регистр в который линкер записывает адрес списка собранных модулей. Небольшая стартовая процедура это делает. Командная строка в Linux обрабатывается при обработке запуска на исполнение. Параметры argc и argv передаются по Си-соглашению через стек, обратиться к которому можно через baseStack в модуле KERNEL. |
Автор: | Борис Рюмшин [ Суббота, 04 Апрель, 2009 09:43 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Дмитрий, а под какой сборкой Линукса вы его собирали? Код: command error: code file for libgtk-x11-2.0.so not found
**** * Error 01 * libgtk-x11-2.0.so: code file not found **** |
Автор: | Alexey Veselovsky [ Суббота, 04 Апрель, 2009 10:44 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Подтверждаю. Работает. PS. Debian Lenny |
Автор: | Сергей Оборотов [ Суббота, 04 Апрель, 2009 11:21 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Борис Рюмшин писал(а): Дмитрий, а под какой сборкой Линукса вы его собирали? А у Вас какая? Результат тот же.
[code][/code] |
Автор: | Alexey Veselovsky [ Суббота, 04 Апрель, 2009 11:31 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Забавно. Народ спрашивает у других какой дистрибутив у них линукс, а при этом не говорит какой у них Какие все стеснительные! |
Автор: | Борис Рюмшин [ Суббота, 04 Апрель, 2009 11:47 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Это я упустил. Хотя несовместимость между собой - это минус Линукс-систем. Но похоже в моей версии и проблема: Ubuntu 8.10 x86-64. Подозреваю, что в этом самом 64 и есть проблема... |
Автор: | Сергей Оборотов [ Суббота, 04 Апрель, 2009 11:54 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Борис Рюмшин писал(а): Подозреваю, что в этом самом 64 и есть проблема... А 32-разрядную версию библиотеки если поставить что будет?
|
Страница 9 из 15 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |