OberonCore https://forum.oberoncore.ru/ |
|
Подсистема CDev и компилятор КП для командной строки https://forum.oberoncore.ru/viewtopic.php?f=47&t=2324 |
Страница 1 из 2 |
Автор: | Роман М. [ Воскресенье, 07 Февраль, 2010 00:31 ] |
Заголовок сообщения: | Подсистема CDev и компилятор КП для командной строки |
Я взялся за доработку подсистемы CDev (из сборки bb-revival-nix-0.1.tar.gz), задавшись целью создать компилятор КП для командной строки. Компилятор состоит из "движка" (back-end) в виде доработанного модуля CDevCompiler, скомпонованного в cdev.dll, а также головной программы (front-end), написанной на Free Pascal (cpcc[.exe]). На данный момент компилятор умеет только компилировать, создавая ocf и osf в директориях Code, Sym соответствующих подсистем. Отсутствует (пока) сборка в исполняемые файлы целевой ОС. Имея DevElflinker, уже можно двигаться в направлении Linux. Итого, файлы планируется запускать с помощью загрузчика, использующего каркас в libBB[.dll/.so]. Последние новости читайте в сообщениях ниже этого. Вложение: исходные файлы.Вложение: Бинарник для Win32. Внутри находится также простой пример исходного кода вместе с файлом проекта. Всё распаковать в системный корень БлэкБокса. Наличие blackbox[.exe] не обязательно для работы, а только набор подсистем для компиляции и сборки.Файлы обновлёны. Версия 2010-04-16 с "движком" компилятора версии 1.1.3 |
Автор: | Роман М. [ Четверг, 18 Февраль, 2010 16:08 ] |
Заголовок сообщения: | Re: Подсистема CDev и компилятор КП для командной строки |
Выкладываю front-end, написанный на Free Pascal (cpcc [PE/Elf]). Возможно, его стоит написать в XDS. Сам CDevCompiler работает так, что сам ничего и никуда не выводит, а только хранит состояние компиляции, необходимой для считывания front-end'ом (то есть, номер ошибки, размер кода генерации и прочее). Вложение: Для компиляции используется fpcmake. Читать INSTALLATION в директории doc.Вложение: Модули для межплатформенной загрузки динамических библиотек, необходимые для компиляции cpcc. Распаковать в корневую папку исходников cpcc.Файлы обновлены. Застрял пока на одном месте: при ошибке в компиляции выводится номер позиции каретки в исходном файле и я не знаю как его транслировать в номер строки и столбца (для дальнейшего толкования внешними инструментами, к примеру, в редакторах vim/SciTE). Компилировать можно, но находить ошибки по номеру каретки трудно, поэтому приходится действовать вслепую. |
Автор: | Роман М. [ Четверг, 25 Февраль, 2010 00:16 ] |
Заголовок сообщения: | Re: Подсистема CDev и компилятор КП для командной строки |
Обновил файлы подсистемы CDev и исходные коды front-end консольного компилятора CPCC. Решил проблему с показом номера строки и столбца, если есть ошибка. Сообщения компилятора об ошибках в программе выводятся вместе с позицией строки и столбца. Ошибки ввода-вывода на данный момент показывает численным значением. Позже добавлю, чтобы выводилось сообщение. Нужно ещё добавить компоновку в исполняемые файлы... |
Автор: | Роман М. [ Вторник, 02 Март, 2010 13:33 ] |
Заголовок сообщения: | Re: Подсистема CDev и компилятор КП для командной строки |
Наконец-то сумел избавить модуль ElfLinker от некоторых зависимостей: Dialog, TextMappers, StdLog, DevCommanders. Я разделил его на две части, вынеся всё, что касается конкретно среды Блэкбокса в отдельный модуль CDevBuilder. А это обработка командера, всяких передаваемых параметров и подготовка списка модулей, надлежащих компиляции. Код: DEFINITION CDevBuilder; PROCEDURE LinkDll; PROCEDURE LinkDynDll; END CDevBuilder. CDevBuilder.LinkDll libtestbb.so := TestExport# ~ Таким образом,
|
Автор: | Роман М. [ Среда, 10 Март, 2010 00:40 ] |
Заголовок сообщения: | Re: Подсистема CDev и компилятор КП для командной строки |
Вести с фронта. Добил таки связку front-end с компоновщиком. Статус компилятора таков:
(*) Почти умеет компоновать в so, потому что выявились отличия в создаваемых библиотеках ElfLinker'ом. Как выяснилось, ElfLinker не экспортирует символы переменных, а только точки входа процедур - в отличие от Linker, исправно создающей DLL со всеми символами. ** Файлы обновлены. Желающие могут пощупать бинарник под вин32. |
Автор: | Валерий Лаптев [ Среда, 10 Март, 2010 08:06 ] |
Заголовок сообщения: | Re: Подсистема CDev и компилятор КП для командной строки |
Теперь еще нужна краткая инструкция по пользованию. С описанием, что на входе, что на выходе. |
Автор: | Info21 [ Среда, 10 Март, 2010 12:24 ] |
Заголовок сообщения: | Re: Подсистема CDev и компилятор КП для командной строки |
Роман М. писал(а): Вести с фронта. ... Движение создаёт оптимизм.
|
Автор: | Роман М. [ Среда, 10 Март, 2010 15:39 ] |
Заголовок сообщения: | Re: Подсистема CDev и компилятор КП для командной строки |
Двигателем прогресса является желание создать межплатформенный компилятор КП, создающий исполняемый код на целевых ОС. Целью я поставил создание библиотек, состоящих из скомпонованных модулей и возможность использования сторонних библиотек целевой ОС (Windows-dll, Linux-so). То есть это хорошо для случая, когда необходимо создать независимый от BlackBox проект, выполняющийся обычным способом (exe/dll/so). Касательно компилятора хочу посоветоваться. Я решил отталкиваться от поставки BB 1.6RC5, поэтому к вам вопрос: устанавливать ли компилятор в корень дистрибутива ББ (необходим для компоновки модулей ББ) или же в отдельную директорию, создавая профиль с необходимой информацией о том где корень ББ, где лежит cdev.[dll/so] (а тут возможны подводные камни) ? При этом остаётся возможность применения каркаса ББ с его динамически подгружаемыми модулями (ocf), если исключать этап компоновки в исполняемый код. Таким образом, возможно динамически загружать программу со всеми компонентами, используя libBlackBox (который ещё сырой). Этот вариант, пожалуй, стоит развивать. Однако, каркас прочно основавается на GUI, а с его портированием есть немало проблем. Тогда вырисовывается другой вариант: создание не-GUI каркаса, предоставляющего собой самый настоящий framework наподобие .NET (минимальный набор для динамической загрузки), тогда для пользовательского интерфейса останется поднапрячься с портированием HostWindows и прочих. |
Автор: | Роман М. [ Среда, 10 Март, 2010 17:35 ] |
Заголовок сообщения: | Re: Подсистема CDev и компилятор КП для командной строки |
Пример файла проекта TestExport.prj: Код: [Project] ProjectName=TestExport [Compiler] Module=CDev\Mod\Test1.cmps CompilerOptions= [Linker] LinkedMods=TestExport# LinkerMode=Dll OutputFile=export.dll Запускать в корневой директории BB Код: cpcc TestExport.prj Если всё успешно, то на выходе получим export.dll. Код: D:\BBCBmod>cpcc TestExport.prj Component Pascal command-line compiler Compiling CDev\Mod\Test1.cmps Compiled. pc=68, dsize=0 Linking File export.dll written: 4608 164 Если есть ошибка в коде, то типа этого: Код: D:\BBCBmod>cpcc TestExport.prj
Component Pascal command-line compiler Compiling CDev\Mod\Test1.cmps 1 error(s) detected Error #0: undeclared identifier Position: row=8, column=7 |
Автор: | Роман М. [ Понедельник, 12 Апрель, 2010 08:40 ] |
Заголовок сообщения: | Re: Подсистема CDev и компилятор КП для командной строки |
Новости Наконец-то получился рабочий вариант компилятора для ОС Linux, создающий библиотеки .so! Так что межОСность уже присутствует. Ув. коллеги! ![]() ![]() Итак, Linux: libcdev.so + cpcc + [корень подсистемы BlackBox] Windows: cdev.dll + cpcc.exe + [корень подсистемы BlackBox] Примечание Компиляция была отработана только на компонентах с единым модулем. Для компиляции проекта, состоящего из нескольких модулей, требуется доработка, потому что сборка будет успешной лишь в том случае, если все сборочные модули скомпилированы заранее. Файлы выложу позже. P.S. А этот компилятор, вообще, кому-то, кроме меня, интересен? |
Автор: | Евгений Темиргалеев [ Понедельник, 12 Апрель, 2010 09:00 ] |
Заголовок сообщения: | Re: Подсистема CDev и компилятор КП для командной строки |
Роман М. писал(а): Наконец-то получился рабочий вариант компилятора для ОС Linux, создающий библиотеки .so!... Есть штатный компилятор ББ и DevElfLinker, который делает библиотеки .so. Мне удобнее запускать оное хозяйство из-под wine; необходимости в консольном-исполняемом из-под Linux варианте пока не ощущаю.
P.S. А этот компилятор, вообще, кому-то, кроме меня, интересен? |
Автор: | Info21 [ Понедельник, 12 Апрель, 2010 12:13 ] |
Заголовок сообщения: | Re: Подсистема CDev и компилятор КП для командной строки |
Евгений Темиргалеев писал(а): необходимости в консольном-исполняемом из-под Linux варианте пока не ощущаю. Время быстро идет... Но авторам, жаждущим признания, всегда кажется, что медленно ![]() |
Автор: | Valery Solovey [ Среда, 14 Апрель, 2010 15:03 ] |
Заголовок сообщения: | Re: Подсистема CDev и компилятор КП для командной строки |
Роман М. писал(а): А этот компилятор, вообще, кому-то, кроме меня, интересен? Интересен, конечно.
|
Автор: | Валерий Лаптев [ Среда, 14 Апрель, 2010 20:58 ] |
Заголовок сообщения: | Re: Подсистема CDev и компилятор КП для командной строки |
Роман М. писал(а): А этот компилятор, вообще, кому-то, кроме меня, интересен? Да. |
Автор: | Роман М. [ Четверг, 15 Апрель, 2010 12:52 ] |
Заголовок сообщения: | Re: Подсистема CDev и компилятор КП для командной строки |
Отлаживаю связку CDev с cpcc: пока не всё гладко работает; проверяю защиту "от дурака". Спасибо за поддержку! |
Автор: | Илья Ермаков [ Четверг, 15 Апрель, 2010 14:00 ] |
Заголовок сообщения: | Re: Подсистема CDev и компилятор КП для командной строки |
В первую очередь, это Ваш опыт - и разбирательства с ББ, и продумывания каких-то возможных схем... А этим опытом в нужный момент где-то с кем-то поделитесь. Так что, и сомневаться нечего - польза большая. ![]() |
Автор: | Роман М. [ Суббота, 17 Апрель, 2010 00:56 ] |
Заголовок сообщения: | Re: Подсистема CDev и компилятор КП для командной строки |
Обновил файлы до версии 1.1.3 (см. сообщения № 1 и 2 в теме):
|
Автор: | Info21 [ Четверг, 16 Сентябрь, 2010 17:27 ] |
Заголовок сообщения: | Re: Подсистема CDev и компилятор КП для командной строки |
Роман М. писал(а): Обновил файлы до версии 1.1.3 (см. сообщения № 1 и 2 в теме): Это функционально эквивалентно какому-нибудь gcc? Из ЦЕРНа жалуются на состояние дел -- может, стоит туда дать информацию про этот компилятор? |
Автор: | Роман М. [ Пятница, 17 Сентябрь, 2010 14:09 ] |
Заголовок сообщения: | Re: Подсистема CDev и компилятор КП для командной строки |
Info21 писал(а): Роман М. писал(а): Обновил файлы до версии 1.1.3 (см. сообщения № 1 и 2 в теме): Это функционально эквивалентно какому-нибудь gcc? Из ЦЕРНа жалуются на состояние дел -- может, стоит туда дать информацию про этот компилятор? Можно дать ссылку на страницу моего домашнего сайта: http://romiras.dyndns.org/doku/bbox/com ... l_compiler . Частично перевёл на английский. Дома постараюсь дописать полную документацию на английском. Там же и бинарные сборки для Linux/Windows. |
Автор: | Роман М. [ Пятница, 17 Сентябрь, 2010 14:32 ] |
Заголовок сообщения: | Re: Подсистема CDev и компилятор КП для командной строки |
Планирую также написать межплаформенный компонент для динамической загрузки модулей, по подобию Dialog.Call, но без Блэкбокса. |
Страница 1 из 2 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |