OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Воскресенье, 10 Август, 2025 22:41

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: Четверг, 24 Июль, 2025 12:59 

Зарегистрирован: Среда, 23 Июль, 2025 21:04
Сообщения: 44
Добрый день, уважаемые форумчане.

Не нашел на форуме инфу о том, как сделать файла *.so на Обероне.
Для BlackBox под Linux.

Хочу попробовать использовать файл .so для сборки Андроид приложения apk.

Файл .so насколько мне известно является библиотекой Linux - аналогом dll Windows.
Для андроида необходима компиляция библиотеки .so для архитектуры arm7a 32 bit или arm8 64 bit.

Всем известная Delphi тоже создаёт файл *.so когда собирает apk приложение для Андроида.
Для запуска библиотеки Delphi добавляет в сборку Андроид приложения apk Java-загрузчик библиотеки .so.
И плюсом конечно же манифест и ресурсы.
Поэтому я думаю, что по такой же технологии можно собирать Андроид приложение на Обероне.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 24 Июль, 2025 22:03 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 600
Откуда: Украина, Днепропетровская обл.
А у нас есть компиляторы Оберона в ARMv7 и Aarch64, для которых предусмотрен линкер в формат .so?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 25 Июль, 2025 08:45 

Зарегистрирован: Среда, 23 Июль, 2025 21:04
Сообщения: 44
Лично я не нашел. Поэтому и спросил.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 25 Июль, 2025 12:23 

Зарегистрирован: Среда, 23 Июль, 2025 21:04
Сообщения: 44
Я пока не смог понять технологию, по которой Delphi автоматически преобразует программу в библиотеку .so и собирает apk приложение Android.
Но по факту так и есть, если открыть apk файл, созданный Delphi, как zip архив. Например, WinRar-ом.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 25 Июль, 2025 12:45 

Зарегистрирован: Среда, 23 Июль, 2025 21:04
Сообщения: 44
А ещё мне удалось найти проект создания apk приложения Android для программы, которая написана на Lazarus Pascal.
Там тоже нужно сначала компилировать библиотеку .so для arm32 и arm64.
А потом добавлять эту библиотеку в готовый шаблон apk приложения для Android.
Вот ссылка на проект

sourceforge.net/p/nativeandroidcamera/code/ci/master/tree/

Здесь также нужно использовать загрузчик библиотеки, который должен быть написан на Java.

А для запуска на устройстве Android, внешние функции библиотеки из файла .so должны быть указаны как application.MainActivity в файле манифеста для Android.
Для удобства автор проекта создал готовые к использованию bash-скрипты для сборки APK и его подписания.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 25 Июль, 2025 13:05 

Зарегистрирован: Среда, 23 Июль, 2025 21:04
Сообщения: 44
Поэтому, с учетом изложенного, я подумал, что по такой же технологии можно собрать Андроид приложение из программы, которая написана на Обероне.

Но не нашел инфу, как сделать из программы на Обероне библиотеку .so для arm-v7 или arm-v8.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 25 Июль, 2025 18:19 

Зарегистрирован: Среда, 23 Июль, 2025 21:04
Сообщения: 44
Нашел на сайте https://blackbox.oberon.org
в разделе "Расширения-трансляторы" пакет под названием Транслятор Компонентного Паскаля в Си - CPFront.

Снова поискал на форуме и нашел здесь целую ветку про это расширение
viewtopic.php?f=163&t=6344

В заголовке темы указана поддержка ARM.
Почитал ветку.

Насколько я понял трансляция - это не компиляция.
Поэтому нужно будет использовать пакет GCC для Arm Android.

В результате как мне кажется получить .so файл библиотеки для arm v7a Android вполне реально. Сначала нужно транслировать программу с помощью CPfront на Си. Потом использовать компилятор и линкер из набора GCC для Arm v7a Android.

Таким образом у меня остался только такой вопрос - что нужно дополнительно указать в тексте программы на Компонентом Паскале, чтобы после трансляции на Си и обработки пакетом GCC для Arm v7a получить именно библиотеку so, а не исполняемый файл для Android?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 26 Июль, 2025 04:55 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 600
Откуда: Украина, Днепропетровская обл.
Я смотрю, Вы не ищете лёгких путей. ;) А в чём цель-то? Чтобы именно на Обероне? В какой-нибудь Android Studio, чай проблем будет гораздо поменьше, а процесс попроще. Или это самоцель?

Когда-то я пробовал собирать приложение для Андроида на GPCP, но срезался на ошибке в компиляторе (что-то связанное с инициализацией конструкторов) и общей "сырости" GPCP. А править его некому.

Притом это была попытка сделать SDK-приложение для Андроида (т.е. Java/JVM/Dalvik-based), а не NDK. Хотя JNI/NDK я тоже рассматривал.

А с Java micro edition такой трюк получился. Впрочем, приложение было не особо сложное. Но это долбанная возня, надо было серьёзно разобраться с тем, как при помощи утилит из JDK получить .jar-файл, как верифицировать приложение, как подписать и так далее. Вы точно хотите в этом барахтаться?

Артем Запаранюк писал(а):
Нашел на сайте https://blackbox.oberon.org
в разделе "Расширения-трансляторы" пакет под названием Транслятор Компонентного Паскаля в Си - CPFront.
Когда я портировал BlackBox на ARMv7, пользовался именно CPfront. Инструмент хороший, хотя и сыроватый, но даден OMinc'ами "как есть", за что им огромное спасибо конечно.

Но CPfront не адаптирован под 64-битную разработку. И если его дорабатывать, то надо будет залезть и во фронт-энд (а он использует фронт-энд от BlackBox). Насколько мне известно, что-то в этом направлении сделал Дм. Дагаев (проект Мульти-Оберон), но подробностей не знаю, лучше бы спросить у него самого.

Артем Запаранюк писал(а):
Снова поискал на форуме и нашел здесь целую ветку про это расширение
В заголовке темы указана поддержка ARM.
Верно. И даже 64-битный ARM.
Но это не расширение, а вполне самостоятельный проект.

Артем Запаранюк писал(а):
Насколько я понял трансляция - это не компиляция.
Поэтому нужно будет использовать пакет GCC для Arm Android.
Именно. Придётся разобраться с опциями вызова Си-компайлера.

Артем Запаранюк писал(а):
В результате как мне кажется получить .so файл библиотеки для arm v7a Android вполне реально.
Вполне реально.

Артем Запаранюк писал(а):
Сначала нужно транслировать программу с помощью CPfront на Си. Потом использовать компилятор и линкер из набора GCC для Arm v7a Android.
Можете конечно и через CPfront, но Вы уверены, что справитесь? Тут сразу надо заметить, что сейчас Андроиды вполне уже 64-битные. Так что я бы советовал Ofront+, который создан на базе Ofront, CPfront и BlackBox. И поддерживает 64-битную разработку.

Артем Запаранюк писал(а):
Таким образом у меня остался только такой вопрос - что нужно дополнительно указать в тексте программы на Компонентом Паскале, чтобы после трансляции на Си и обработки пакетом GCC для Arm v7a получить именно библиотеку so, а не исполняемый файл для Android?
Вас интересуют именно опции компиляции?
Тут будет много сложностей помимо них.

Во-первых, надо понять что из себя будет представлять эта библиотека .so
Вы точно хотите использовать все возможности Оберона/КП и включить туда системные вызовы и сборщик мусора? Может часть ядра? Или попробуете обойтись без NEW и сборки мусора? (Что будет гораздо проще).
В поставке Ofront+ есть пример сборки простой DLL/SO, можно плясать оттуда. Там же есть и опции GCC для сборки библиотеки.

Код:
CC="cc -Os -g0 -fvisibility=hidden -fomit-frame-pointer -finline-small-functions -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -Wl,--gc-sections"

$CC MyDLL.c -fPIC -shared -oMyDLL.so

Это самый простой и минимальный вариант сборки, но там будет ещё масса тонкостей, например: переназначать ли имена вида "Module_Proc" в "Proc"? И так далее. В общем, тут надо много времени потратить, чтобы разобраться. Если хотите, я помогу, но может всё же лучше Android SDK? Или сразу Dart/Flutter берите, чтобы не морочиться. Я серьёзно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 26 Июль, 2025 15:30 

Зарегистрирован: Среда, 23 Июль, 2025 21:04
Сообщения: 44
Большое спасибо за развернутый и подробный ответ. И отдельно - за пример библиотеки и код для трансляции.
Тем самым Вы уже оказали мне существенную помощь.

Потому что у меня в планах было взять из примеров Help-a BlackBox-а проект калькулятора. И попробовать создать из него библиотеку .so для arm Android.

Проект калькулятора, как мне кажется, можно считать вполне стандартным GUI приложением для Андроид, потому что есть визуальные компоненты - форма, на которой есть управляющие элементы-кнопки, а также дисплей для ввода-вывода информации. Плюс предусмотрена обработка событий нажатий на кнопки, ввода данных, плюс алгоритмы расчета с выводом визуального результата.

Поэтому Ваш ответ с примерами кода мне очень поможет.

Использовать для вновь созданной библиотеки .so я планирую пример apk приложения Андроид для Lazarus Pascal, о котором я написал пост выше.
Поэтому названия экспортируемых функций в проекте калькулятора я укажу такие же как в примере Lazarus Pascal.

Потому что на них уже заряжен и манифест и Java-загрузчик в шаблоне apk.

Таким образом, на примере калькулятора лично для меня станет понятно, какие графические библиотеки нужно будет добавить в Apk приложение Андроида.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 26 Июль, 2025 16:56 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 600
Откуда: Украина, Днепропетровская обл.
Совсем не уверен, что помог Вам хоть как-то. Но, как говорил один мой знакомый: "всецело завидую Вашему энтузиазму" ;)

Артем Запаранюк писал(а):
Потому что у меня в планах было взять из примеров Help-a BlackBox-а проект калькулятора. И попробовать создать из него библиотеку .so для arm Android.
Дело в том, что у BlackBox свой графический фреймворк, который сильно отличается от способа построения GUI в Андроиде. Ваша задача получить калькулятор из BlackBox на Андроиде сводится по сути к портированию всего BlackBox под Android и запуска под ним калькулятора, потому что калькулятор потянет большинство модулей BlackBox. Калькулятор в BlackBox нельзя отделить от BlackBox.

Вы же понимаете, что BlackBox для Windows с его 32-битным компилятором для Ваших целей практически бесполезен? Вам понадобится BlackBox для Linux. Вероятно, в качестве базы подойдёт BlackBox для Linux x86, который сейчас курирует Иван Денисов. Но этот проект не готов для работы под 64 бита.

В общем, путь Вы выбрали сложный и несколько неестественный. Но удачи, вдруг что-то получится. Объём работ по разворачиванию калькулятора на Андроид нахожу весьма серьёзным.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 27 Июль, 2025 08:29 

Зарегистрирован: Среда, 23 Июль, 2025 21:04
Сообщения: 44
Я нашел статью о том, как собрать apk приложение Андройд с помощью транслятора Oberon-07.
Вот ссылка.
https://vostok-space.blogspot.com/2018/ ... d.html?m=1

В примерах создания apk приложения отрисовка графики построена на использовании API Android из пакета android.graphics.
Вот ссылка на примеры на гитхабе
https://github.com/Vostok-space/vostok

Насколько я понял, причина в том что BlackBox опирается на графику GTK, но Андроид не поддерживает такую графику.

Поэтому согласен с Вами.
Объем работ по отрисовке для Андроида визуальных элементов калькулятора действительно значительный.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 27 Июль, 2025 11:37 

Зарегистрирован: Среда, 23 Июль, 2025 21:04
Сообщения: 44
А ещё, как мне кажется, Вы уже также помогли своим сообщением на форуме о том, как сделать java midlet, используя Gardens Point Component Pascal.

Вот ссылка
viewtopic.php?f=117&t=4170

Я нашел статью о том, как преобразовать java midlet, чтобы создать apk приложение Android.
Вот по этой ссылке:
https://microemu.blogspot.com/2009/08/c ... o.html?m=1

Планирую выяснить более подробно о возможностях графики, которая используется в java midlet-ах.

Оберон-07 может переводить на Java.

Поэтому можно попробовать собрать Java midlet.
И дальше преобразовать этот мидлет в apk приложение.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 27 Июль, 2025 12:22 

Зарегистрирован: Среда, 23 Июль, 2025 21:04
Сообщения: 44
Ну, а если возможности графики java midlet-ов окажутся недостаточными для полноценного GUI приложения Андроид, то можно изучить возможности плагина Gardens Point Component Pascal для Visual Studio и Eclipse.

По данным википедии Компонентный Паскаль был интегрирован в Visual Studio[11] и в межплатформенную среду разработки Eclipse[11].
Вот ссылка
https://ru.m.wikipedia.org/wiki/Компонентный_Паскаль

Думаю, что эти плагины могут использовать возможности других расширений внутри IDE Visual Studio, Eclipse.

Включая графические библиотеки и пакеты.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 05 Август, 2025 17:00 

Зарегистрирован: Пятница, 11 Январь, 2019 19:26
Сообщения: 306
Откуда: Russia
Если что, то есть ECS Oberon-2 с поддержкой arm
https://ecs.openbrace.org/


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 06 Август, 2025 09:22 

Зарегистрирован: Среда, 23 Июль, 2025 21:04
Сообщения: 44
Sergej Durmanov писал(а):
Если что, то есть ECS Oberon-2 с поддержкой arm
https://ecs.openbrace.org/



Перешёл по ссылке.
Прочитал.
Мне понравилось.
Особенно вот этот п.7.7.14
https://ecs.openbrace.org/manual/manual ... 00007.7.14
Спасибо!

Я уже получил в этой ветке замечание, что ищу сложные и неестественные пути.

Поэтому я решил поискать пути попроще.

Которые соответствуют идеям профессора Вирта.
И в теории, и на практике.

Ваше предложение, тогда, будет у меня за номером 3.
Потому что первые 2 у меня такие:
1. Сделать руками файлы, которые указаны в параграфе "Описание" на сайте Wiki.Oberon
Вот ссылка.
https://wiki.oberon.org/blackbox/dev

2. Использовать Active Oberon.
Чтобы собрать компилятор BB для ARM.

И затем полученным компилятором собрать весь BB для ARM.
Либо отдельные модули компилировать и линковать в библиотеку .so для Андроида.

Ещё раз Вам спасибо!


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 06 Август, 2025 14:38 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 600
Откуда: Украина, Днепропетровская обл.
Артем Запаранюк писал(а):
2. Использовать Active Oberon.
Чтобы собрать компилятор BB для ARM.
Собрать компилятор ББ, чтобы он по-прежнему генерил код для x86, но работал на хост-архитектуре ARM? А что это даст? Пусть лучше он генерит ARM-код, а работает по-прежнему под ББ. Давайте, Вы же сказали, что это легко. Всего-навсего поменять команды x86 на ARM. Делов-то.

Артем Запаранюк писал(а):
И затем полученным компилятором собрать весь BB для ARM.
Как-то у Вас всё слишком просто. Сразу видно, что никогда таким не занимались.

Артем Запаранюк писал(а):
Либо отдельные модули компилировать и линковать в библиотеку .so для Андроида.
Вот это уже реальнее, чтобы не за стопицот лет. Через Си. Но ладно, способ спорный.

Действуйте! ;)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 06 Август, 2025 16:28 

Зарегистрирован: Среда, 23 Июль, 2025 21:04
Сообщения: 44
Артем Запаранюк писал(а):
2. Использовать Active Oberon.
Чтобы собрать компилятор BB для ARM.


Цитата:
Собрать компилятор ББ, чтобы он по-прежнему генерил код для x86, но работал на хост-архитектуре ARM?


Почему Вы так решили?

В Active Oberon есть версия Oberon для Arm.

Артем Запаранюк писал(а):
И затем полученным компилятором собрать весь BB для ARM.


Цитата:
Как-то у Вас всё слишком просто. Сразу видно, что никогда таким не занимались.


Вот поэтому, профессор Вирт и делал простые компиляторы.

Чтобы любой дурак мог собрать компилятор Pascal на то железо, которое есть в наличии.

Это я про себя сейчас.
И ещё про тех, кто сразу же после выхода первой версии языка программирования Pascal упрашивал профессора сделать компилятор под их железо.
Уже тогда железо было у всех разное. По принципу - кто и что смог спаять. И ОС-ы также.

Цитата:
Действуйте! ;)

Пока не могу. Причины я уже указал в посте по теме Перспективы BB.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 06 Август, 2025 16:53 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 600
Откуда: Украина, Днепропетровская обл.
Артем Запаранюк писал(а):
Почему Вы так решили?
Видите ли, одно дело портировать на ARM тот же самый компилятор, который сейчас есть для x86. Что не даст никакого проку. Хотя задача вполне посильная и даже не очень сложная. Или же перенацелить кодогенерацию на ARM, т.е. чтобы компилятор вместо команд x86 генерировал команды ARM. Тут задача на несколько порядков сложнее.

Артем Запаранюк писал(а):
В Active Oberon есть версия Oberon для Arm.
Как это поможет Вам переносить BlackBox? Опишите хотя бы в виде простого списка последовательность действий.

Артем Запаранюк писал(а):
Вот поэтому, профессор Вирт и делал простые компиляторы.
Это понятно. Профессор Вирт действовал как самурай, т.е. бился там, где стоял. И решал свои задачи. Но лично я против простых компиляторов, потому что они дают плохой или ужасный код. Это не значит, что я не одобряю деятельность Вирта, просто каждому своё.

Артем Запаранюк писал(а):
Пока не могу. Причины я уже указал в посте по теме Перспективы BB.
Ну понятно, понятно. Сообщество не сделало, а самому некогда.

Всё не так легко и плёво, как Вам кажется, уважаемый Артём. Когда (если) займётесь — поймёте сами. Если бы мы могли — уже бы сделали.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 06 Август, 2025 17:59 

Зарегистрирован: Среда, 23 Июль, 2025 21:04
Сообщения: 44
Артем Запаранюк писал(а):
В Active Oberon есть версия Oberon для Arm.


Цитата:
Как это поможет Вам переносить BlackBox? Опишите хотя бы в виде простого списка последовательность действий.



Через Oberon для Arm прогнать компилятор+исходники BB в бинарном формате odc.

На выходе кодогенерация будет под Arm.

Исполняемый файлы тоже будут для запуска на Arm.

Этот вариант, чтобы руками не менять платформу в исходниках компилятора.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 06 Август, 2025 18:28 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 600
Откуда: Украина, Днепропетровская обл.
Артем Запаранюк писал(а):
Через Oberon для Arm прогнать компилятор+исходники BB в бинарном формате odc.
Ничего, что AO не понимает формата odc? И ничего, что в ББ язык КП, а не AO? Понимаю. Это мелочи, выеденного яйца не стоят.

Артем Запаранюк писал(а):
На выходе кодогенерация будет под Arm.
С чего бы? Её кто-то перепишет? (хинт: она осталась в AO)

Артем Запаранюк писал(а):
Исполняемый файлы тоже будут для запуска на Arm.

Этот вариант, чтобы руками не менять платформу в исходниках компилятора.
А, ну-ну.

Ну вот Вы пришли на форум, намекаете на наши некомпетенции и рассказываете как всё просто, как два пальца, Вы бы сам уже давно сделали, да времени нет. Реакция? Предсказуема.

Знаете, Артём, люди делятся на две категории. Кто-то умеет и делает, а кто-то мечтает и у него мама — бывший СНС ИММ УрО РАН.

Не заблуждайтесь насчёт простоты. То, что Вам сейчас кажется простым, не такое уж простое.

Без обид. Устраняюсь от разговора.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2025, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB