OberonCore https://forum.oberoncore.ru/ |
|
Перевод BlackBox под Linux https://forum.oberoncore.ru/viewtopic.php?f=34&t=1280 |
Страница 11 из 15 |
Автор: | Сергей Оборотов [ Вторник, 07 Апрель, 2009 17:20 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Димыч писал(а): Все ничего, но это верно для стека приложения, а не для стека библиотеки. Без разницы совершенно. Для стека библиотеки подобную работу производит её загрузчик. Код: /* Run the initializer functions of new objects. */ _dl_init (new, args->argc, args->argv, args->env); и далее в функции call_init Код: /* Call the function. */ init (argc, argv, env); init - это как раз стартовая функция библиотеки. Не пробовали, наверное. |
Автор: | Димыч [ Среда, 08 Апрель, 2009 16:40 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
GUEST писал(а): init - это как раз стартовая функция библиотеки. Не пробовали, наверное. Я все же поступил по-другому. В модуле Init сделал процедуру Код: PROCEDURE InitSystem*(argc, argv: INTEGER); и в команде сборки библиотеки libBB.so пометил модуль Init символом "#" (экспортировать из *.so).В модуле BlackBox.c сделал прототип этой функции, с помощью функции dlsym загружаю функцию из *.so, затем вызываю с параметрами (argc, (int)argv). На всякий случай аргумент(ы) приводятся к int. В процедуру перенесен код, располагающийся в инициализационной секции модуля Init. Таким образом, процедура инициализации вызывается после фактической инициализации среды. Решение, может быть не очень корректное с точки зрения Linux, но, на мой взгляд, полностью проглядываемое, нет никаких подразумеваемых вещей (типа структуры стека). Следующее. Заставил таки я работать подсистему CDev (Dev, отвязанный от графической части). Текстовый файл (не odc) компилируется, создаются osf, ocf-файлы. Теперь надо делать разбор командной строки. Если получится, то до субботы постараюсь все это выложить (на SVN в том числе), если нет, тогда примерно через неделю выложу. |
Автор: | XomA [ Среда, 08 Апрель, 2009 23:21 ] |
Заголовок сообщения: | Библиотека libBB.so |
Решил я собрать BlackBox.c ключом -lBB , предварительно убрав оттуда динамическую загрузку, но добавив определение функции Код: void InitSystem(int argv, char** argc); и скопировав libBB.so в /lib Так, у меня gcc выдал Код: /lib/../lib/libBB.so: warning: the `gets' function is dangerous and should not be used. /usr/bin/ld: errno: TLS definition in /lib/libc.so.6 section .tbss mismatches non-TLS reference in /lib/../lib/libBB.so /lib/libc.so.6: could not read symbols: Bad value collect2: выполнение ld завершилось с кодом возврата 1 Хотя, при использовании libdl всё идёт нормально, в чём тут проблема |
Автор: | Valery Solovey [ Четверг, 09 Апрель, 2009 15:34 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Первое, что нашёл в гугле по TLS definitioin: errno: TLS definition in /lib/libc.so.6 section .tbss mismatches |
Автор: | Пётр Кушнир [ Пятница, 10 Апрель, 2009 18:48 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Почему-то давно нет обновлений в официальном репозитарии проекта. Как же кто-то сможет вам помочь, если не понятно, что уже сделано, и над чем ведутся работы. |
Автор: | Димыч [ Среда, 22 Апрель, 2009 10:38 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
После вынужденного молчания обновил репозиторий по адресу https://svn.oberoncore.ru/community/BlackBox-Linux/ Что изменилось. 1) Внесены изменения от GUEST касаемо защиты памяти. См. модули Kernel, Libc. 2) Изменен механизм инициализации самого ББ. Вместо вызова кода Init производится вызов процедуры Init.InitSystem. Подробности в BlackBox.c 3) Изменен модуль Lin/Docu/Build-Tool.odc. Модуль Init помечен символом "#", что приводит к экспорту процедур из этого модуля в libBB.so; 4) Добавлена подсистема Gnome (она же вызывается при старте, см. Init). 5) Добавлена подсистема CDev. Пример работы CDev\Mod\Test.odc и CDev\Mod\Test.ob2 6) Добавлены файлы с лицензией, изменениями и пустой (пока) README. |
Автор: | Сергей Оборотов [ Среда, 22 Апрель, 2009 23:39 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
После копирования библиотек pango* в /usr/lib32/ и редактирования путей в файле /usr/lib32/pango/1.6.0/module-files.d последняя сборка заработала на 64-разрядной Debian. Но трассировка по strace при этом завершается аварийно. Возможно, из-за проблем с самим strace. Если у кого-то похожая ситуация дайте знать. |
Автор: | Борис Рюмшин [ Четверг, 30 Апрель, 2009 15:45 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Обсуждение графической части: viewtopic.php?f=34&t=1538 |
Автор: | Иван Горячев [ Вторник, 14 Июль, 2009 08:39 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Димыч, стандартный вопрос |
Автор: | Димыч [ Вторник, 14 Июль, 2009 10:33 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Иван Горячев писал(а): Димыч, стандартный вопрос тупо глядя на стопку стандартов Какой именно? |
Автор: | Димыч [ Вторник, 14 Июль, 2009 19:23 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Мой предыдущий пост был написан под гнётом убийственного чувства юмора и рабочей обстановки Если говорить конкретно о том, как идут дела с переводом, то я сейчас разбираюсь со внутренностями ББ с тем, чтобы понять, как модель обработки событий GTK наложить на модель обработки сообщений ББ (1) и разбираюсь со структурой подсистемы host для тех же целей (2). Работа была приостановлена на 2 месяца по двум причинам: сессия и отпуск. Планировал, что будет возможность уделять время этой работе, но оказалось, что нет. Сейчас работа возобновлена. О результатах напишу позже (приблизительно через 2 недели). |
Автор: | Димыч [ Понедельник, 24 Август, 2009 03:23 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Работа по переводу BlackBox на Linux переезжает на сайт http://oberonrevival.sourceforge.net. |
Автор: | Роман М. [ Воскресенье, 18 Октябрь, 2009 23:13 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Есть ли какие-либо новости с фронта? Димыч ещё занимается переносом в Линукс или дело уже заглохло? Хотелось бы определиться с составом проекта:
|
Автор: | Димыч [ Понедельник, 19 Октябрь, 2009 14:03 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Роман М. писал(а): Есть ли какие-либо новости с фронта? Димыч ещё занимается переносом в Линукс или дело уже заглохло? Хотелось бы определиться с составом проекта:
Предыдущее сообщение в теме видели? Если я скажу, что работа заглохла, это, конечно, будет неправдой. Но работа ведется значительно медленнее, чем хотелось бы. Специально для того, чтобы работой мог заниматься не только один я, и был сделан сайт. Все вопросы практического характера - туда. Welcome! |
Автор: | Alexey Veselovsky [ Понедельник, 19 Октябрь, 2009 16:02 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Димыч писал(а): Роман М. писал(а): Есть ли какие-либо новости с фронта? Димыч ещё занимается переносом в Линукс или дело уже заглохло? Хотелось бы определиться с составом проекта:
Предыдущее сообщение в теме видели? Если я скажу, что работа заглохла, это, конечно, будет неправдой. Но работа ведется значительно медленнее, чем хотелось бы. Специально для того, чтобы работой мог заниматься не только один я, и был сделан сайт. Все вопросы практического характера - туда. А куда там задавать вопросы? По ссылке форума не находится. |
Автор: | Димыч [ Понедельник, 19 Октябрь, 2009 16:47 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Alexey Veselovsky писал(а): А куда там задавать вопросы? По ссылке форума не находится. На странице разработки есть адреса списков рассылки.
|
Автор: | Димыч [ Пятница, 30 Октябрь, 2009 13:54 ] |
Заголовок сообщения: | Компиляция в Linux |
Я запустил в Linux компиляцию модулей, записанных в текстовых файлах. Исходники выложу чуть позже, пока только описание. Компиляция: ./BlackBox compile CDev/Mod/Test.ob2 Содержимое Test.ob2: MODULE Test; IMPORT Log; PROCEDURE Abc*(); BEGIN Log.String("CDevTest => OK"); Log.Ln; END Abc; END Test; Запуск: ./BlackBox run CDevTest.Abc CDevTest => OK *.odc таким образом не компилируются, надо еще думать. Обнаружилась странная ошибка/особенность. Переменные из *.so файла не импортируются, в частности, не импортировалась переменная errno из <errno.h>. Пришлось передавать ее явно в Kernel и заменять вызовы Libc.errno на Kernel.errno(). Может я чего не понимаю? (опубликовано в списке рассылки, здесь дубль) |
Автор: | Евгений Темиргалеев [ Воскресенье, 01 Ноябрь, 2009 11:56 ] |
Заголовок сообщения: | Re: Компиляция в Linux |
Димыч писал(а): Обнаружилась странная ошибка/особенность. Странность заключается в том, что errno с некоторых пор не просто переменная - смотрите как "оно" определено в errno.hПеременные из *.so файла не импортируются, в частности, не импортировалась переменная errno из <errno.h>. Пришлось передавать ее явно в Kernel и заменять вызовы Libc.errno на Kernel.errno(). Может я чего не понимаю? Дружно кидаем скалу в огород макросов. |
Автор: | Info21 [ Воскресенье, 01 Ноябрь, 2009 12:53 ] |
Заголовок сообщения: | Re: Компиляция в Linux |
Евгений Темиргалеев писал(а): Дружно кидаем скалу в огород макросов. Много мелких камней лучше, чем один большой ( И это не просто остроумство ) |
Автор: | Димыч [ Воскресенье, 01 Ноябрь, 2009 15:13 ] |
Заголовок сообщения: | Re: Компиляция в Linux |
Евгений Темиргалеев писал(а): Димыч писал(а): Обнаружилась странная ошибка/особенность. Странность заключается в том, что errno с некоторых пор не просто переменная - смотрите как "оно" определено в errno.hПеременные из *.so файла не импортируются, в частности, не импортировалась переменная errno из <errno.h>. Пришлось передавать ее явно в Kernel и заменять вызовы Libc.errno на Kernel.errno(). Может я чего не понимаю? |
Страница 11 из 15 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |