OberonCore https://forum.oberoncore.ru/ |
|
Linux Console: выбор реализации пускача и способ запуска https://forum.oberoncore.ru/viewtopic.php?f=133&t=4089 |
Страница 3 из 3 |
Автор: | Евгений Темиргалеев [ Среда, 17 Октябрь, 2012 14:48 ] |
Заголовок сообщения: | Re: Linux Console: выбор реализации пускача и способ запуска |
Иван Денисов писал(а): Скорее выложить два варианта сборки с кратким описанием по компиляции тем и другим образом. Тянуть нельзя. С тянуть нельзя, понятно . Выложить два варианта не катит. Нужно определиться с одним, выложить его, и его же далее поддерживать.Иван Денисов писал(а): Для кроссразработки также предложить две схемы. Мою с временным перемещением файлов предлагаю тоже не убирать. Все-таки работает все и мне, например, так очень удобно работать. Не вижу препятствий для наличия нескольких схем работы на выбор пользователя. Предлагайте: где инструкция по разворачиванию рабочего места?Иван Денисов писал(а): На каком ядре остановились? В репозитории сейчас что-за ядро оказалось в итоге в папке System/Mod/ ? Ядро Александра все-таки пока недоделанное? Давайте версию для BSD выложим попозже, а вот для линукса ведь ядро есть от OpenBUGS 322. Считаю надо с ним пока выложить все вразумительные наработки по Linux версии. В System/Mod/ линуксовое ядро для публикации. Читайте дельты, там все написано.По ядру Александра он сам скажет. Из его наработок пока ничего не вносил: от автора дельт нету, провести сравнение и выписать пока времени не нашел. Насчёт ядра OpenBUGS 322 ничего не знаю, даже где брать. Дайте пожалуйста ссылку. Заодно, может сравните, чем оно отличается от того, которое уже есть. |
Автор: | Илья Ермаков [ Среда, 17 Октябрь, 2012 21:12 ] |
Заголовок сообщения: | Re: Linux Console: выбор реализации пускача и способ запуска |
Я за второй вариант запуска. |
Автор: | Info21 [ Среда, 17 Октябрь, 2012 21:17 ] |
Заголовок сообщения: | Re: Linux Console: выбор реализации пускача и способ запуска |
Илья Ермаков писал(а): Я за второй вариант запуска. Поддержу.
|
Автор: | Alexander Shiryaev [ Воскресенье, 21 Октябрь, 2012 02:53 ] |
Заголовок сообщения: | Re: Linux Console: выбор реализации пускача и способ запуска |
Да, есть в Ubuntu такая проблема, конструктор библиотеки не запускается, если к ней нет обращения. Как заставить компилятор (линкер) работать нормально, я так и не понял. Стал разбираться с Kernel.baseStack. Она используется в двух местах: в сборке мусора (Kernel.MarkLocals) и при отображении информации о TRAP-е (в Kernel.TrapHandler). Причём она может изменяться (уменьшаться) в Kernel.Start, хоть это и не обязательно, -- для того, чтобы не отображать лишнее. По-моему SetKernelBaseStack вызывать не нужно в том случае, если не вызывать никаких процедур из библиотеки. Т. е. в случае: libBB.so := Kernel+ Files HostFiles StdLoader Все процедуры выполняются в одном и том же стеке, при вызове конструктора библиотеки. Сначала переменная baseStack инициализируется в Kernel.INIT, вызываемой из конструктора библиотеки, потом из него же Files.INIT, HostFiles.INIT, и потом из него же запускается сам BlackBox в StdLoader.INIT. Так что всё должно быть нормально. |
Автор: | Евгений Темиргалеев [ Воскресенье, 21 Октябрь, 2012 14:52 ] |
Заголовок сообщения: | Re: Linux Console: выбор реализации пускача и способ запуска |
Alexander Shiryaev писал(а): Да, есть в Ubuntu такая проблема, конструктор библиотеки не запускается, если к ней нет обращения. Как заставить компилятор (линкер) работать нормально, я так и не понял. Решение записано в Dev_dev/Docu/ElfLinker-Link (снова перенёс ElfLinker-Link в Dev ).
|
Автор: | Евгений Темиргалеев [ Воскресенье, 21 Октябрь, 2012 14:53 ] |
Заголовок сообщения: | Re: Linux Console: выбор реализации пускача и способ запуска |
Alexander Shiryaev писал(а): Стал разбираться с Kernel.baseStack. Зачем? Решение с ручной дин. загрузкой отбросили.
|
Автор: | Иван Денисов [ Понедельник, 22 Октябрь, 2012 08:31 ] |
Заголовок сообщения: | Re: Linux Console:Полная консольная (серверная) версия под L |
Евгений, прямой вопрос: удасться ли договориться о включении LinLinker и первого метода сборки в публикацию которую вы курируете или это принципиальная изначальная позиция? |
Автор: | Евгений Темиргалеев [ Понедельник, 22 Октябрь, 2012 09:26 ] |
Заголовок сообщения: | Re: Linux Console: выбор реализации пускача и способ запуска |
Изначальной моей позицией был способ (1). В ходе обсуждения (РБВ, ТЕЭ, ТФВ) появился критерий минимальности исходника сишного пускача, с которым все единодушно согласились. По этому критерию отбирается способ (2). Решение зафиксировано 14.09 в viewtopic.php?p=74762#p74762, работа началась. Общий подход --- найти как можно более простое решение. Сюда же относится и поддержка только одного способа. "Лучше меньше, да лучше". Какие у Вас есть принципиальные (технические) возражения? По какой причине Вы так держитесь за LinLinker? Давайте обсуждать. (Просто хочется, потому что я так привык и мне теперь так удобно, это не довод. Мне был удобен (1) способ, я к нему привык.) --- Если хочется совсем правильное решение --- возьметесь доделывать ElfLinker? У меня, например, нету сейчас времени, чтобы на ~месяц всё бросить для изучения ELF-формата и реализации DevElfLinker, чтобы оценить возможность/сложность доделывания. |
Автор: | Alexander Shiryaev [ Понедельник, 22 Октябрь, 2012 14:32 ] |
Заголовок сообщения: | Re: Linux Console: выбор реализации пускача и способ запуска |
Надо составить таблицу, строки которой - способы запуска, столбцы - особенности. Т. к. способ (2) в Ubuntu не работает, то я за способ (1) для случая, когда из libBB.so нет экспорта (т. к. в этом случае SetKernelBaseStack не требуется). Код: #include <dlfcn.h>
#include <stdio.h> int main (int argc, char *argv[]) { void * h; int res; h = dlopen("libBB.so", RTLD_LAZY | RTLD_GLOBAL); if (h != NULL) { res = 0; } else { perror(dlerror()); res = 1; } return res; } |
Автор: | Иван Денисов [ Понедельник, 22 Октябрь, 2012 15:02 ] |
Заголовок сообщения: | Re: Linux Console: выбор реализации пускача и способ запуска |
В чем смысл публиковать то, что принципиально не отличается от того, что опубликовал Димыч в сборке bb-revival-nix0.1? Ведь просто ничего нового нет тогда за исключением нескольких фиксов! Надо открыть материалы, может Роман или кто-то еще разберутся с документацией ELF и доделают, а у нас так руки и не дойдут, у одних нет времени у других квалификации. Для меня метод 2 очень сложен, сравните, для метода номер 1 инструкция занимает меньше 10 строчек. В то время как для второго развертывание сложное, решение выглядит костыльно (не говорю, что оно плохое, но оно выглядит ПЛОХО), а поэтому не привлечет людей в проект. |
Автор: | Евгений Темиргалеев [ Понедельник, 22 Октябрь, 2012 15:43 ] |
Заголовок сообщения: | Re: Linux Console: выбор реализации пускача и способ запуска |
Info21 писал(а): Илья Ермаков писал(а): Я за второй вариант запуска [ viewtopic.php?p=75490#p75490 ]. Поддержу.Цитата: Решение 4, 21102012, ТЕЭ Усё решение: из Kernel вычищены команднострочные костыли, получилось как в Kernel для Windows.Повторить подход Kernel для Windows не в лоб, организуя для других модулей командную строку, которую они не могут получить системным вызовом, а концептуально: основать передачу параметров на таком механизме ОС, который позволит получать их через системные вызовы. Тогда модули сами получают потребные параметры, Kernel же о параметрах ничего знать не надо. Согласно документации libc, программа может получать параметры также и через переменные окружения, для чтения/записи которых предоставлены соответствующие функции. В случае динамической библиотеки этот способ оказывается единственным. http://www.gnu.org/software/libc/manual ... ram-Basics Отличие от Windows-подхода с командной строкой: - программный: модули вместо разобра командной строки и выделения своих параметров, запрашивают значения переменных окружения с определёнными и зафиксированными в документации пользователя именами; - пользователь: вместо указания параметров в командной строке при вызове программы, выставляет значения переменных окружения перед её вызовом. Теперь специальный пусковой скрипт .sh не нужен. Достаточно только бинарного пускача и библиотеки. HostFiles переделан под новый подход --- дельта HostFilesCmdline. Цитата: Серверная конфигурация Тоже всё хорошо почистилось --- костыли и заметки как бы их улучшить заменились на штатные запросы переменных окружения. Новая команда запуска показана ниже, workPath --- параметр тестовой программы. Исходный метод определения параметров серверной конфигурации: - первичная папка = папка, содержащая выполняемый файл; - вторичная папка = задана через командную строку ключом /USE. Серверная конфигурация включается, если (корректно) задана вторичная папка. Т. к. получение имени выполняемого файла — та же проблема, что и получение командной строки, то для неё тоже решение — первичная папка определяется явно через переменную окружения. Такой подход, в частности, позволяет использовать один и тот же выполняемый файл (библиотеку), размещённые в стандартных папках (FHS), для любых конфигураций. Новый метод: - первичная папка = значение переменной окружения bbServerDir; - вторичная папка = значение переменной окружения bbWorkDir. Переменные должны содержать полное имя папок (без "/" в конце). Серверная конфигурация включается, если (корректно) явно определены как первичная так и вторичная папка; если первичная папка не определена, в качестве неё используется текущая. Осталось только уточнить как обозвать переменные окружения. Менять потом будет крайне проблематично. Пока буду потихоньку переделывать инструкцию по сборке "екзе". .../home/test/dev$ gcc --version > 1.utf8 ; env bb-primaryDir=$HOME/bb16rc6 bb-secondaryDir=$PWD workPath=Dev/Docu ./test >> 1.utf8 Код: gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 ./test > 1.utf8 Copyright (C) 2011 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. failed to install signal 32 failed to install signal 33 Server dir: /home/bb/bb16rc6 Work dir: /home/test/dev Work path: Dev/Docu ******************** abs: "/home/bb/bb16rc6/Dev/Docu" ====== LocList (res = 0) ====== nlocs = 0 ====== FileList (res = 0) ====== AlienTool.odc Analyzer.odc Browser.odc Build-Tool.odc CPB.odc CPC486.odc CPE.odc CPH.odc CPL486.odc CPM.odc CPP.odc CPS.odc CPT.odc CPV486.odc Cmds.odc ComDebug.odc ComInterfaceGen.odc Commanders.odc Compiler.odc Debug.odc Dependencies.odc HeapSpy.odc Inspector.odc LinkChk.odc Linker.odc Markers.odc MsgSpy.odc P-S-I.odc Packer.odc Profiler.odc RBrowser.odc References.odc Search.odc Selectors.odc SubTool.odc Sys-Map.odc TypeLibs.odc User-Man.odc nfiles = 38 ******************** abs: "/home/test/dev/Dev/Docu" ====== LocList (res = 0) ====== nlocs = 0 ====== FileList (res = 0) ====== ElfLinker-Link.odc ElfLinker.odc nfiles = 2 ******************** "/Dev/Docu" (abs: "/home/test/dev/Dev/Docu") ====== LocList (res = 0) ====== nlocs = 0 ====== FileList (res = 0) ====== AlienTool.odc Analyzer.odc Browser.odc Build-Tool.odc CPB.odc CPC486.odc CPE.odc CPH.odc CPL486.odc CPM.odc CPP.odc CPS.odc CPT.odc CPV486.odc Cmds.odc ComDebug.odc ComInterfaceGen.odc Commanders.odc Compiler.odc Debug.odc Dependencies.odc ElfLinker-Link.odc ElfLinker.odc HeapSpy.odc Inspector.odc LinkChk.odc Linker.odc Markers.odc MsgSpy.odc P-S-I.odc Packer.odc Profiler.odc RBrowser.odc References.odc Search.odc Selectors.odc SubTool.odc Sys-Map.odc TypeLibs.odc User-Man.odc nfiles = 40 Код: failed to install signal
32 failed to install signal 33 Server dir: /home/test/dev Work dir: /home/test/dev Work path: ******************** abs: "/home/test/dev" ====== LocList (res = 0) ====== Code Dev Dev_dev Host Lin Lin_dev Sym System System_dev Test _dev archives d nlocs = 13 ====== FileList (res = 0) ====== 1.utf8 Lin-Console-Coder-List.utf8 start.odc starter.c test test.so nfiles = 6 ... для следующих двух случаев --- тоже самое |
Автор: | Евгений Темиргалеев [ Понедельник, 22 Октябрь, 2012 16:00 ] |
Заголовок сообщения: | Re: Linux Console: выбор реализации пускача и способ запуска |
Иван Денисов писал(а): Надо открыть материалы, может Роман или кто-то еще разберутся с документацией ELF и доделают, а у нас так руки и не дойдут, у одних нет времени у других квалификации. Все, у кого есть время и квалификация, давно могли бы сделать. Пакет Оминк/Опенбагз сколько уже времени открыт?Иван Денисов писал(а): Для меня метод 2 очень сложен, сравните, для метода номер 1 инструкция занимает меньше 10 строчек. В то время как для второго развертывание сложное, решение выглядит костыльно (не говорю, что оно плохое, но оно выглядит ПЛОХО), а поэтому не привлечет людей в проект. Для меня костыльно выглядит отсутствие подробной инструкции. И не надо забывать, что моя инструкция состоит из одного документа, а Ваша требует присутствия в пакете нного количества вспомогательных файлов. Если мою сделать также, она тоже уменьшится в объёме.Но не вижу смысла откатываться к морально устаревшим методам работы, отказываясь от документ-ориентированного интерфейса. Да, чтобы документ стал активным (что снижает рукотыканье в разы), требуется поставить сопутствующие компоненты. Есть предположение, что Ваше "развертывание сложное" заключается в их отсутствии... |
Автор: | Иван Денисов [ Понедельник, 22 Октябрь, 2012 16:56 ] |
Заголовок сообщения: | Re: Linux Console: выбор реализации пускача и способ запуска |
Блин, я вот все время пишу первый, первый, а по вашей классификации, то о чем я пишу - это третий (3) метод с LinLinker. Вообще, внес много путаницы в обсуждения, прошу прощения. |
Автор: | Евгений Темиргалеев [ Понедельник, 22 Октябрь, 2012 19:06 ] |
Заголовок сообщения: | Re: Linux Console: выбор реализации пускача и способ запуска |
Товарищи, отдельно акцентирую внимание на вопросе выбора имён переменных окружения --- параметров: Код: env bb-primaryDir=xxx bb-secondaryDir=yyy zzz/program которые заменяют /USE (bb-secondaryDir) и положение экзешника как неявный параметр (bb-primaryDir): Код: xxx/program /USE yyy Мне всё равно, какие будут названия. Лишь бы пожелания не начали возникать через неделю или месяц, когда придётся лопатить кучу документов. P.S. Будет эта методика в итоге применяться или не будет --- вопрос отдельный, поэтому про названия можно высказаться вовсе его не касаясь. |
Автор: | Борис Рюмшин [ Понедельник, 22 Октябрь, 2012 21:45 ] |
Заголовок сообщения: | Re: Linux Console: выбор реализации пускача и способ запуска |
Предлагаю более стандартно (вернее, как принято уже на практике, по линуксовому) к именам подойти: BB_PRIMARY_DIR и BB_SECONDARY_DIR. |
Автор: | Alexander Shiryaev [ Понедельник, 22 Октябрь, 2012 23:33 ] |
Заголовок сообщения: | Re: Linux Console: выбор реализации пускача и способ запуска |
Поддерживаю. А то на самом деле с командной строкой проблем много. В Windows хоть WinApi.GetCommandLine есть. BB_PRIMARY_DIR -- необязательная переменная (если не определена -- то getcwd()), BB_SECONDARY_DIR -- необязательная переменная (как /USE). |
Автор: | Илья Ермаков [ Вторник, 23 Октябрь, 2012 08:28 ] |
Заголовок сообщения: | Re: Linux Console: выбор реализации пускача и способ запуска |
Цитата: Предлагаю более стандартно (вернее, как принято уже на практике, по линуксовому) к именам подойти: BB_PRIMARY_DIR и BB_SECONDARY_DIR. Поддерживаю. |
Автор: | Евгений Темиргалеев [ Вторник, 23 Октябрь, 2012 14:30 ] |
Заголовок сообщения: | Re: Linux Console: выбор реализации пускача и способ запуска |
Итого, по результатам голосования ЗА (трое), ВОЗДЕРЖАЛСЯ (один), не участвовали (двое). заменил значения констант на BB_PRIMARY_DIR и BB_SECONDARY_DIR. |
Страница 3 из 3 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |