OberonCore https://forum.oberoncore.ru/ |
|
Что-то странное с компилятором ББ https://forum.oberoncore.ru/viewtopic.php?f=2&t=6378 |
Страница 1 из 1 |
Автор: | hothing [ Понедельник, 08 Апрель, 2019 18:44 ] |
Заголовок сообщения: | Что-то странное с компилятором ББ |
Речь о ББ 1.7.1
Кто-нибудь знает где инициализируется DevCPM.options? |
Автор: | Иван Денисов [ Понедельник, 08 Апрель, 2019 19:02 ] |
Заголовок сообщения: | Re: Что-то странное с компилятором ББ |
Чтобы компилировать модули с COM обязательно надо линковать в компилятор WinOle, кажется. Сталкивался с этой проблемой. Поищу, уточню. "встроенный в исполняемый модуль" это что значит? |
Автор: | Иван Денисов [ Понедельник, 08 Апрель, 2019 19:09 ] |
Заголовок сообщения: | Re: Что-то странное с компилятором ББ |
hothing писал(а): [list][*] При компиляции больших списков модулей падает, если символьные файлы не созданы. Трап, странный и не рабочий - мешанина символов.[/*] Это скорее всего из-за коллизии при создании временных файлов. Вот мы обсуждали как-то эту проблему. Если создается больше 200 временных файлов в секунду. То это теоретически может объяснить баг. Код: PROCEDURE CreateFile (f: File; VAR res: INTEGER); VAR num, n: INTEGER; BEGIN IF f.name = "" THEN num := WinApi.GetTickCount(); n := 200; REPEAT GetTempFileName(f.loc.path, f.name, num); INC(num); DEC(n); OpenFile(create, f.name, f.ref, res) UNTIL (res # fileExistsErr) & (res # alreadyExistsErr) & (res # paramErr) OR (n = 0) ELSE OpenFile(f.state, f.name, f.ref, res) END END CreateFile; Это реально слабое место в системе. Но пока так. В версии для Linux вот так сделано Код: PROCEDURE GetTempFileName (IN path: FullName; OUT name: FullName; num: INTEGER);
VAR i: INTEGER; str: ARRAY 16 OF CHAR; BEGIN str := tempName; i := 7; WHILE i > 2 DO str[i] := CHR(num MOD 10 + ORD("0")); DEC(i); num := num DIV 10 END; Append(path, str, "", 8, name) END GetTempFileName; PROCEDURE CreateFile (f: File; VAR res: INTEGER); VAR num, n: INTEGER; BEGIN IF f.name = "" THEN num := LinLibc.clock(); n := 200; REPEAT GetTempFileName(f.loc.path, f.name, num); INC(num); DEC(n); OpenFile(create, f.name, f.ref, res) UNTIL (res # fileExistsErr) OR (n = 0) ELSE OpenFile(f.state, f.name, f.ref, res) END END CreateFile; |
Автор: | hothing [ Вторник, 09 Апрель, 2019 10:57 ] |
Заголовок сообщения: | Re: Что-то странное с компилятором ББ |
Иван Денисов писал(а): Чтобы компилировать модули с COM обязательно надо линковать в компилятор WinOle, кажется. Сталкивался с этой проблемой. Поищу, уточню. Спасибо за наводку. Цитата: "встроенный в исполняемый модуль" это что значит? В Exe-файл.
|
Автор: | Валерий Лаптев [ Вторник, 09 Апрель, 2019 14:29 ] |
Заголовок сообщения: | Re: Что-то странное с компилятором ББ |
Иван Денисов писал(а): В версии для Linux вот так сделано Иван, поясните, пожалуйста. ББ работает в линухе? А то мы тут замутили АльтЛинукс Образование. Там Wine есть, но хотелось бы непосредственно. |
Автор: | Иван Денисов [ Вторник, 09 Апрель, 2019 14:48 ] |
Заголовок сообщения: | Re: Что-то странное с компилятором ББ |
Валерий Лаптев писал(а): Иван Денисов писал(а): В версии для Linux вот так сделано Иван, поясните, пожалуйста. ББ работает в линухе? А то мы тут замутили АльтЛинукс Образование. Там Wine есть, но хотелось бы непосредственно. Да, работает. В статусе альфа-версии, но вполне стабильно. Есть что в нем дорабатывать, но будет мотив ускорить дело Вложение:
|
Автор: | Валерий Лаптев [ Вторник, 09 Апрель, 2019 15:32 ] |
Заголовок сообщения: | Re: Что-то странное с компилятором ББ |
Спасибо!!! Я потом спрошу, где взять дистрибутив... |
Автор: | Info21 [ Вторник, 09 Апрель, 2019 18:12 ] |
Заголовок сообщения: | Re: Что-то странное с компилятором ББ |
На всякий случай: все новые сборки Информатики-21 основаны на кроссплатформенной ББ от Ивана Андреича и Ко. |
Автор: | Иван Денисов [ Вторник, 09 Апрель, 2019 19:49 ] |
Заголовок сообщения: | Re: Что-то странное с компилятором ББ |
Иван Денисов писал(а): Чтобы компилировать модули с COM обязательно надо линковать в компилятор WinOle, кажется. Сталкивался с этой проблемой. Поищу, уточню Нигде ни, в почте ни в сообщениях на форумах, ни в личной переписке, ни в репозиториях не смог найти обсуждение этого... |
Автор: | hothing [ Среда, 10 Апрель, 2019 17:34 ] |
Заголовок сообщения: | Re: Что-то странное с компилятором ББ |
Разобрался с п.2. Источник проблемы лежит в DevCompiler, в двух процедурах: Init + Module(...). Метод включения DTC весьма своеобразный: проверяется наличие файла ComDebug.ocf в Dev/Code. (Мда, ключик/аргумент в опции компилятора добавить нелья было?) UPD Изменил код процедуры Init так, что через модуль Meta проверяется наличие модуля DevComDebug, если не найден файл. Не знаю насколько это корректное решение. |
Автор: | Иван Денисов [ Среда, 10 Апрель, 2019 19:23 ] |
Заголовок сообщения: | Re: Что-то странное с компилятором ББ |
Хорошо, что вам удалось найти. Рекомендую линковать DevComDebug в компилятор. Так сделано в Центре и в нашем хранилище. У меня были подозрения, что это именно DevComDebug, так как он последний в списке на упаковку независимого консольного компилятора. Мы его как раз в конце добавляли, когда обнаружили, что COM не компилируется. Но не нашел никаких следов этого обсуждения, поэтому не написал. Код: @echo off
copy dev0new.exe tmp.exe @echo DevCompiler.CompileThis HostPackedFiles DevPacker > tmp.txt @echo DevPacker.PackThis dev0new.exe := Code/Init.ocf Host/Code/Console.ocf Code/Console.ocf Host/Code/Lang.ocf Code/Dialog.ocf Host/Code/Fonts.ocf Code/Fonts.ocf Host/Code/Windows.ocf Code/Windows.ocf Code/Ports.ocf Code/Services.ocf Code/Stores.ocf Code/Strings.ocf Code/Math.ocf Code/Sequencers.ocf Code/Models.ocf Code/Views.ocf Code/Log.ocf Code/Converters.ocf Code/Meta.ocf Code/Controllers.ocf Code/Properties.ocf Code/Containers.ocf Code/Mechanisms.ocf Code/Documents.ocf Code/Dates.ocf Code/Printers.ocf Code/Printing.ocf Host/Code/Dates.ocf Host/Code/Dialog.ocf Std/Code/Interpreter.ocf Std/Code/Dialog.ocf Std/Code/Log.ocf Text/Code/Models.ocf Text/Code/Mappers.ocf Text/Code/Rulers.ocf Text/Code/Views.ocf Text/Code/Setters.ocf Text/Code/Controllers.ocf Cons/Code/Log.ocf Code/Config.ocf Cons/Code/Interp.ocf Dev/Code/Commanders.ocf Code/Controls.ocf Std/Code/CFrames.ocf Dev/Code/Compiler.ocf Dev/Code/Markers.ocf Dev/Code/Selectors.ocf Dev/Code/CPM.ocf Dev/Code/CPT.ocf Dev/Code/CPB.ocf Dev/Code/CPP.ocf Dev/Code/CPS.ocf Dev/Code/CPE.ocf Dev/Code/CPV486.ocf Dev/Code/CPH.ocf Dev/Code/CPL486.ocf Dev/Code/CPC486.ocf Std/Code/ETHConv.ocf Host/Code/TextConv.ocf Dev/Code/Linker.ocf Cons/Code/Compiler.ocf Host/Code/Registry.ocf Dev/Code/References.ocf Dev/Code/Debug.ocf Dev/Code/ComDebug.ocf >> tmp.txt @echo Kernel.Quit(0) >> tmp.txt tmp.exe < tmp.txt del tmp.txt del tmp.exe |
Автор: | Trurl [ Четверг, 11 Апрель, 2019 08:20 ] |
Заголовок сообщения: | Re: Что-то странное с компилятором ББ |
hothing писал(а): (Мда, ключик/аргумент в опции компилятора добавить нелья было?) Это осталось с тех времен, когда DTC Compiler продавался отдельно. |
Автор: | Иван Денисов [ Четверг, 11 Апрель, 2019 09:30 ] |
Заголовок сообщения: | Re: Что-то странное с компилятором ББ |
Trurl писал(а): hothing писал(а): (Мда, ключик/аргумент в опции компилятора добавить нелья было?) Это осталось с тех времен, когда DTC Compiler продавался отдельно. Разумно будет убрать этот рудимент из компилятора? |
Автор: | hothing [ Воскресенье, 14 Апрель, 2019 08:43 ] |
Заголовок сообщения: | Re: Что-то странное с компилятором ББ |
Иван Денисов писал(а): Разумно будет убрать этот рудимент из компилятора? Убрать опцию или сам DTC? А последний реально выделить как опциональную надстройку к компилятору? Это и будет ответ. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |