Оберон-клуб «ВЄДАsoft» https://zx.oberon.org/forum/ |
|
Как из Active Oberon сделать портабельную запускаемую программу? https://zx.oberon.org/forum/viewtopic.php?f=79&t=476 |
Страница 1 из 3 |
Автор: | Pimbom [ 01 дек 2019, 00:12 ] |
Заголовок сообщения: | Как из Active Oberon сделать портабельную запускаемую программу? |
Есть программное обеспечение http://sage.com.ua/ru.shtml?e6l0 для языка программирования Дракон, которое позволяет из блок-схемы получить Active Oberon. Как из него сделать портабельную программу, запускаемую кликом мыши? |
Автор: | sage [ 02 дек 2019, 21:22 ] |
Заголовок сообщения: | Re: Как из Active Oberon сделать портабельную запускаемую программу? |
Имеется в виду получение исполняемого .exe файла? Точно так же как и просто на Active Oberon. ДРАКОН в приведённой Вами ссылке лишь надстройка над Active Oberon. Всё что можно написать на Active Oberon можно изобразить и на ДРАКОНе. Вы консольное приложение хотите сделать или GUI-приложение? |
Автор: | Pimbom [ 02 дек 2019, 22:01 ] |
Заголовок сообщения: | Re: Как из Active Oberon сделать портабельную запускаемую программу? |
Благодарю за информацию. Для начала консольное с целью обучения. Пока что в Оберон надо освоить самые основы. Уже понял по каким учебным материалам это можно сделать. |
Автор: | sage [ 03 дек 2019, 02:22 ] |
Заголовок сообщения: | Re: Как из Active Oberon сделать портабельную запускаемую программу? |
В принципе, для системы A2 есть вариант сборки её главного приложения с включением консольной оболочки. На основе этого приложения уже можно сделать любое консольное приложение, более того, весьма гибкое приложение, так как у традиционных статически собранных консольных приложений одна-единственная "точка входа", а здесь можно сделать одно консольное приложение со множеством "точек входа" и потом легко за эти точки входа дёргать в процессе работы ![]() Вот, например, я взял стандартный (с включенной консольной оболочкой) главный запускаемый модуль Unix A2 x64, добавил один-единственный модуль, скомпилировал его под Linux 64. Дальше я написал простейший командный файл для исполнения в консольной оболочке A2 и получил в результате готовый CGI скрипт, который можно скопировать на сервер и он работает ![]() Код: "OBERON"
![]() 1. Окидываем взором наш модуль, который нам надо скомпилировать, видим, что: а) SYSTEM - модуль встроенный в компилятор, независимый от платформы; б) Commands - скорее-всего зависим от платформы, список зависимостей нам понадобится; в) Unix - зависимость понятна ![]() 2. Получаем список зависимостей для модулей, для которых нам надо его получить. Для этого выполняем такую команду, первый параметр - платформа, второй - модуль, для которого строим список зависимостей: Цитата: Release.RequiredModules Linux64 Commands ~ Получаем такой список: Цитата: AMD64.Builtins.Mod Trace.Mod Linux.Glue.Mod Linux.Unix.Mod Unix.Machine.Mod 3. Повторяем п. 2 пока не получим полный список всех зависимостей.Heaps.Mod Modules.Mod Unix.Objects.Mod KernelLog.Mod RealConversions.Mod Streams.Mod 4. Составляем команду компиляции нашего модуля под заданную платформу, перечислив все модули, которые надо скомпилировать: Цитата: Compiler.Compile -p=Unix64 Команды для исполнения в оболочке написал такие (как видите, тут используется стандартный Unix-овый приём Шебанг, для указания, чем данный скрипт надо исполнить):AMD64.Builtins.Mod Trace.Mod Linux.Glue.Mod Linux.Unix.Mod Unix.Machine.Mod Heaps.Mod Modules.Mod Unix.Objects.Mod KernelLog.Mod RealConversions.Mod Streams.Mod Commands.Mod env.Mod ~ Цитата: #!./oberon run И как видите, в каждой строчке вызывается какая-то команда какого-либо модуля (т.е. мы вызываем разные точки входа одного приложения).System.Show Content-type: text/html~ System.Ln ~ System.Ln ~ System.Show <HTML> ~ System.Ln ~ System.Show <HEAD><TITLE>Hello from A2 OS</TITLE></HEAD> ~ System.Ln ~ System.Show <BODY> ~ System.Ln ~ System.Show <H1>Hello from A2 OS!</H1> ~ System.Ln ~ System.Show <H2>Version information:</H2> ~ System.Version ~ System.Ln ~ System.Show <H2>Some environment variables:</H2> ~ System.Ln ~ env.var HTTP_HOST ~ System.Show <BR> ~ System.Ln ~ env.var HTTP_USER_AGENT ~ System.Show <BR> ~ System.Ln ~ env.var REQUEST_URI ~ System.Show <BR> ~ System.Ln ~ env.var REQUEST_METHOD ~ System.Show <BR> ~ System.Ln ~ env.var SERVER_NAME ~ System.Show <BR> ~ System.Ln ~ env.var SERVER_SOFTWARE ~ System.Show <BR> ~ System.Ln ~ env.var SERVER_SIGNATURE ~ System.Show <BR> ~ System.Ln ~ env.var UNIQUE_ID ~ System.Show <BR> ~ System.Ln ~ System.Show <H2>Loaded modules:</H2> ~ System.ListModules ~ System.Ln ~ System.Show <H2>To be continued... Stay tuned!</H2> ~ System.Show </BODY></HTML> ~ System.Ln ~ System.PowerDown ~ Результат работы данных команд Hello from A2 OS! При желании можно проанализировать все зависимости и пересобрать данное приложение, оставив только те модули, которые реально нужны. Такую пересборку, естественно, тоже можно выполнить из-под A2. А можно оставить главный модуль и как есть, лишь добавляя функционал, дописывая новые модули. Я высказал идею, что можно вообще сделать целый пакет полезных и удобных консольных утилит на все случаи жизни в "A2 в качестве командного интерпретатора" и по-немногу дописываю всякие утилиты. |
Автор: | sage [ 03 дек 2019, 02:26 ] | ||
Заголовок сообщения: | Re: Как из Active Oberon сделать портабельную запускаемую программу? | ||
Все файлы полученного CGI приложения
|
Автор: | Pimbom [ 03 дек 2019, 07:25 ] |
Заголовок сообщения: | Re: Как из Active Oberon сделать портабельную запускаемую программу? |
Благодарю за информацию. А у Вас ник совпадает с именем части сайта по ссылке из первого поста. Это именно Вы разработали, что там размещено? |
Автор: | sage [ 03 дек 2019, 09:03 ] |
Заголовок сообщения: | Re: Как из Active Oberon сделать портабельную запускаемую программу? |
Pimbom писал(а): Благодарю за информацию. А у Вас ник совпадает с именем части сайта по ссылке из первого поста. Это именно Вы разработали, что там размещено? Да, это мой сайт. Буду рад ответить на любые вопросы, касающиеся содержимого сайта, и не только ![]() |
Автор: | Pimbom [ 03 дек 2019, 19:36 ] |
Заголовок сообщения: | Re: Как из Active Oberon сделать портабельную запускаемую программу? |
А во Free Oberon https://zx.freeoberon.su/forum/viewforum.php?f=116 получаемый Active Oberon можно превращать в exe или имеется некоторая несовместимость? |
Автор: | sage [ 03 дек 2019, 20:01 ] |
Заголовок сообщения: | Re: Как из Active Oberon сделать портабельную запускаемую программу? |
Pimbom писал(а): А во Free Oberon https://zx.freeoberon.su/forum/viewforum.php?f=116 получаемый Active Oberon можно превращать в exe или имеется некоторая несовместимость? Даже если использовать лишь базовые конструкции диалектов Оберона, увы, как минимум именование библиотек и их интерфейсов не совпадёт. А если использовать все возможности Active Oberon (активности, математические расширения, перегрузку операторов и т.д.), то и подавно.Для обеспечения лучшей совместимости надо добавлять соответствующие фронт-энды к компиляторам, стандартизовать библиотеки и т.д. или добавлять Си бэк-энд в компилятор Fox (компилятор языка Active Oberon) ![]() |
Автор: | Zorko [ 03 дек 2019, 22:18 ] |
Заголовок сообщения: | Re: Как из Active Oberon сделать портабельную запускаемую программу? |
Pimbom писал(а): А во Free Oberon https://zx.freeoberon.su/forum/viewforum.php?f=116 получаемый Active Oberon можно превращать в exe или имеется некоторая несовместимость? Когда Free Oberon перейдёт на Ofront+, в нём будет доступно пять Оберон-диалектов:
Не исключаю появления поддержки OberonX и Active Oberon. По мере востребованности. |
Страница 1 из 3 | Часовой пояс: UTC + 2 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |