OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 12 Декабрь, 2017 01:46

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




Начать новую тему Ответить на тему  [ Сообщений: 85 ]  На страницу 1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Что с oo2c?
СообщениеДобавлено: Среда, 14 Октябрь, 2009 14:31 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2178
Откуда: Нижний Новгород
Из репозитория дебиана пакеты убраны. Официальный сайт -- http://www.uni-kl.de/OOC/ мертв, проект на sf.net (http://sourceforge.net/projects/ooc/) не обновлялся с начала года + там нет странички с описанием проекта, т.е. http://ooc.sourceforge.net/ -- пустая страница.

(про то что последний релиз датирован 2005 годом я промолчу, в принципе, если оно стабильно, то это нормально).

Что с ними приключилось то?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что с oo2c?
СообщениеДобавлено: Суббота, 20 Ноябрь, 2010 12:59 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 169
Откуда: Украина, Днепропетровская обл.
Видимо, это проект одного автора, как и много других проектов на Обероне. Если проект заглох, но остаётся актуальным и интересным, надо его подхватить. А oo2c направление хорошее. На нём разработан VisualOberon (кстати, тоже заброшен). Мне известно 3 транслятора из Оберона в Си: XDS-C (безплатный, но исходники закрыты), Ofront (исходники открыты, но хочет денег) и, наконец, oo2c. Он безплатный, отрытый, но только под Linux. Тем приятнее было найти такой пост:

Цитата:
№ 527 28.02.2003 8:13:21
Здравствуйте, уважаемые коллеги.

На сайте http://www.kubanych.ktnet.kg выложен бинарный дистрибутив
компилятора Oberon2 (oo2c) для win32. Размер 1718925 байт.

Данный компилятор разработан в рамках проекта http://ooc.sourceforge.net,
open source,
и изначально написан в debian linux, но работает во всех 32 и 64
разрядных posix платформах.

С уважением,
Kubanych

Сайт естественно мёртвый, а ссылка, по которой я прочёл цитату, вот: http://www.kumanov.com/docs/prog/Delphi/talk/talktopic285.htm
Призываю автора откликнуться. Господа, ну нельзя же зажиливать такие вещи, ими надо делиться! :oops: Для нашей же общей пользы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что с oo2c?
СообщениеДобавлено: Суббота, 20 Ноябрь, 2010 15:50 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1158
Откуда: Tel-Aviv
Ты об этом: Ober-FireBird ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что с oo2c?
СообщениеДобавлено: Суббота, 20 Ноябрь, 2010 18:57 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
Oberon-программам во время исполнения требуются динамический загрузчик и сборщик мусора. Кроме того, среда должна контролировать выход индексов массивов за границы диапазонов.

Вопрос: как это всё (динамически загружаемые модули, "мусор", индексы) будет обрабатываться, если программы на языке Си (откомпилированные из Oberon-программ) исполняются на "голой" операционной системе без специальной среды времени исполнения?

Еще один вопрос: Ober-FireBird (и вообще, FireBird сама по себе) не стыкуется с Блэкбоксом и с GPCP?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что с oo2c?
СообщениеДобавлено: Суббота, 20 Ноябрь, 2010 21:16 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 169
Откуда: Украина, Днепропетровская обл.
Роман М. писал(а):
Ты об этом: Ober-FireBird ?

Да, однако оттуда он тоже не качается.

А заманчиво было бы доработать oo2c до Component Pascal или(и) Active Oberon. Тем заманчивее, что oo2c это транслятор промышленного уровня. В нём реализовано много интересного: есть и юникод, и IN-параметры, и EXNTESIBLE (точнее, NONEXTENSIBLE) RECORDS, и директивы компиляции, свой формат для заголовочных файлов и т.д.

Роман, не желаете взяться? :) Тут есть громадный плюс: избавляемся от лицензии BB. И второй: получим гораздо более мощный оптимизирующий компилятор (за счёт отлично проработанных готовых компиляторов Си). И больше платформ, особенно не-80x86. Если бы был вменяемый (безплатный/открытый/кроссплатформенный) и живой транслятор Оберон -> Си, я бы сделал поддержку SDL и для него.

Сергей Прохоренко писал(а):
Oberon-программам во время исполнения требуются динамический загрузчик и сборщик мусора. Кроме того, среда должна контролировать выход индексов массивов за границы диапазонов.

Вопрос: как это всё (динамически загружаемые модули, "мусор", индексы) будет обрабатываться, если программы на языке Си (откомпилированные из Oberon-программ) исполняются на "голой" операционной системе без специальной среды времени исполнения?

В существующих трансляторах Оберон -> Си эти вопросы так или иначе решены, да и никаких принципиальных проблем я здесь не вижу. Для динамической модульности достаточно воспользоваться механизмом .so/.dll, правда, с некоторыми оговорками. Например, типы импортировать на уровне соглашений (из символьного файла), константы тоже, или же их через функции, возвращающие значение. Можно разработать на Си и микроядро времени исполнения для Оберон-программ, предоставляющее динамический загрузчик, сборщик мусора, да хоть обработку исключений. В Ofront'е, (с которым я знаком получше, чем с oo2c) есть динамическая загрузка модулей. Сделано ли это уже в oo2c? По-моему, нет, хотя надо разбираться.

С проверкой типов и индексов проблем тоже нет. Вот как это элегантно реализовано, например, в Ofront. Взгляните, часть вопросов отпадёт моментально:

Код:
#ifndef SYSTEM__h
#define SYSTEM__h

/*

the Ofront runtime system interface and macros library
copyright (c) Josef Templ, 1995

gcc for Linux version (same as SPARC/Solaris2)
uses double # as concatenation operator

*/

#include <alloca.h>

extern char *memcpy();

/* constants */
#define __MAXEXT   16
#define NIL   0L
#define POINTER__typ   (long*)1L   /* not NIL and not a valid type */

/* basic types */
typedef char BOOLEAN;
typedef unsigned char CHAR;
typedef signed char SHORTINT;
typedef short int INTEGER;
typedef long LONGINT;
typedef float REAL;
typedef double LONGREAL;
typedef unsigned long SET;
typedef void *SYSTEM_PTR;
typedef unsigned char SYSTEM_BYTE;

/* runtime system routines */
extern long SYSTEM_DIV();
extern long SYSTEM_MOD();
extern long SYSTEM_ENTIER();
extern long SYSTEM_ASH();
extern long SYSTEM_ABS();
extern long SYSTEM_XCHK();
extern long SYSTEM_RCHK();
extern double SYSTEM_ABSD();
extern SYSTEM_PTR SYSTEM_NEWREC();
extern SYSTEM_PTR SYSTEM_NEWBLK();
#ifdef __STDC__
extern SYSTEM_PTR SYSTEM_NEWARR(long*, long, int, int, int, ...);
#else
extern SYSTEM_PTR SYSTEM_NEWARR();
#endif
extern SYSTEM_PTR SYSTEM_REGMOD();
extern void SYSTEM_INCREF();
extern void SYSTEM_REGCMD();
extern void SYSTEM_REGTYP();
extern void SYSTEM_REGFIN();
extern void SYSTEM_FINALL();
extern void SYSTEM_GC();
extern void SYSTEM_INIT();
extern void SYSTEM_FINI();
extern void SYSTEM_HALT();
extern void SYSTEM_INHERIT();
extern void SYSTEM_ENUMP();
extern void SYSTEM_ENUMR();

/* module registry */
#define __DEFMOD   static void *m; if(m!=0)return m
#define __REGMOD(name, enum)   if(m==0)m=SYSTEM_REGMOD(name,enum); else return m
#define __ENDMOD   return m
#define __INIT(argc, argv)   static void *m; SYSTEM_INIT(argc, (long)&argv);
#define __REGMAIN(name, enum)   m=SYSTEM_REGMOD(name,enum)
#define __FINI   SYSTEM_FINI(); return 0
#define __IMPORT(name)   SYSTEM_INCREF(name##__init())
#define __REGCMD(name, cmd)   SYSTEM_REGCMD(m, name, cmd)

/* SYSTEM ops */
#define __SYSNEW(p, len)   p=SYSTEM_NEWBLK((long)(len))
#define __VAL(t, x)   (*(t*)&(x))
#define __GET(a, x, t)   x= *(t*)(a)
#define __PUT(a, x, t)   *(t*)(a)=x
#define __LSHL(x, n, t)   ((t)((unsigned)(x)<<(n)))
#define __LSHR(x, n, t)   ((t)((unsigned)(x)>>(n)))
#define __LSH(x, n, t)   ((n)>=0? __LSHL(x, n, t): __LSHR(x, -(n), t))
#define __ROTL(x, n, t)   ((t)((unsigned)(x)<<(n)|(unsigned)(x)>>(8*sizeof(t)-(n))))
#define __ROTR(x, n, t)   ((t)((unsigned)(x)>>(n)|(unsigned)(x)<<(8*sizeof(t)-(n))))
#define __ROT(x, n, t)   ((n)>=0? __ROTL(x, n, t): __ROTR(x, -(n), t))
#define __BIT(x, n)   (*(unsigned long*)(x)>>(n)&1)
#define __MOVE(s, d, n)   memcpy((char*)(d),(char*)(s),n)

/* std procs and operator mappings */
#define __SHORT(x, y)   ((int)((unsigned long)(x)+(y)<(y)+(y)?(x):(__HALT(-8),0)))
#define __SHORTF(x, y)   ((int)(__RF((x)+(y),(y)+(y))-(y)))
#define __CHR(x)   ((CHAR)__R(x, 256))
#define __CHRF(x)   ((CHAR)__RF(x, 256))
#define __DIV(x, y)   ((x)>=0?(x)/(y):-(((y)-1-(x))/(y)))
#define __DIVF(x, y)   SYSTEM_DIV((long)(x),(long)(y))
#define __MOD(x, y)   ((x)>=0?(x)%(y):__MODF(x,y))
#define __MODF(x, y)   SYSTEM_MOD((long)(x),(long)(y))
#define __NEW(p, t)   p=SYSTEM_NEWREC(t##__typ)
#define __NEWARR   SYSTEM_NEWARR
#define __HALT(x)   SYSTEM_HALT(x)
#define __ASSERT(cond, x)   if (!(cond)) {SYSTEM_assert = x; SYSTEM_HALT(-1);}
#define __ENTIER(x)   SYSTEM_ENTIER(x)
#define __ABS(x)   (((x)<0)?-(x):(x))
#define __ABSF(x)   SYSTEM_ABS((long)(x))
#define __ABSFD(x)   SYSTEM_ABSD((double)(x))
#define __CAP(ch)   ((CHAR)((ch)&0x5f))
#define __ODD(x)   ((x)&1)
#define __IN(x, s)   ((s)>>(x)&1)
#define __SETOF(x)   ((SET)1<<(x))
#define __SETRNG(l, h)   ((~(SET)0<<(l))&~(SET)0>>(8*sizeof(SET)-1-(h)))
#define __MASK(x, m)   ((x)&~(m))
#define __COPY(s, d, n)   {char*_a=(void*)s,*_b=(void*)d;long _i=0,_t=n-1;while(_i<_t&&((_b[_i]=_a[_i])!=0)){_i++;};_b[_i]=0;}
static int __STRCMP(x, y)
   CHAR *x, *y;
{long i = 0; CHAR ch1, ch2;
   do {ch1 = x[i]; ch2 = y[i]; i++;
      if (!ch1) return -(int)ch2;
   } while (ch1==ch2);
   return (int)ch1 - (int)ch2;
}
#define __ASH(x, n)   ((n)>=0?__ASHL(x,n):__ASHR(x,-(n)))
#define __ASHL(x, n)   ((long)(x)<<(n))
#define __ASHR(x, n)   ((long)(x)>>(n))
#define __ASHF(x, n)   SYSTEM_ASH((long)(x), (long)(n))
#define __DUP(x, l, t)   x=(void*)memcpy(alloca(l*sizeof(t)),x,l*sizeof(t))
#define __DUPARR(v, t)   v=(void*)memcpy(v##__copy,v,sizeof(t))
#define __DEL(x)   /* DUP with alloca frees storage automatically */
#define __IS(tag, typ, level)   (*(tag-(__BASEOFF-level))==(long)typ##__typ)
#define __TYPEOF(p)   (*(((long**)(p))-1))
#define __ISP(p, typ, level)   __IS(__TYPEOF(p),typ,level)

/* runtime checks */
#define __X(i, ub)   (((unsigned)(long)(i)<(unsigned long)(ub))?i:(__HALT(-2),0))
#define __XF(i, ub)    SYSTEM_XCHK((long)(i), (long)(ub))
#define __RETCHK   __retchk: __HALT(-3)
#define __CASECHK   __HALT(-4)
#define __GUARDP(p, typ, level)   ((typ*)(__ISP(p,typ,level)?p:(__HALT(-5),p)))
#define __GUARDR(r, typ, level)   (*((typ*)(__IS(r##__typ,typ,level)?r:(__HALT(-5),r))))
#define __GUARDA(p, typ, level)   ((struct typ*)(__IS(__TYPEOF(p),typ,level)?p:(__HALT(-5),p)))
#define __GUARDEQR(p, dyntyp, typ)   if(dyntyp!=typ##__typ) __HALT(-6);*(p)
#define __GUARDEQP(p, typ)   if(__TYPEOF(p)!=typ##__typ)__HALT(-6);*(p)
#define __WITHCHK   __HALT(-7)
#define __R(i, ub)   (((unsigned)(long)(i)<(unsigned long)(ub))?i:(__HALT(-8),0))
#define __RF(i, ub)   SYSTEM_RCHK((long)(i),(long)(ub))

/* record type descriptors */
#define __TDESC(t, m, n) \
   static struct t##__desc {\
      long tproc[m]; \
      long tag, next, level, module; \
      char name[24]; \
      long *base[__MAXEXT]; \
      char *rsrvd; \
      long blksz, ptr[n+1]; \
   } t##__desc

#define __BASEOFF   (__MAXEXT+1)
#define __TPROC0OFF   (__BASEOFF+24/sizeof(long)+5)
#define __EOM   1
#define __TDFLDS(name, size)   {__EOM}, 1, 0, 0, 0, name, {0}, 0, size
#define __ENUMP(adr, n, P)   SYSTEM_ENUMP(adr, (long)(n), P)
#define __ENUMR(adr, typ, size, n, P)   SYSTEM_ENUMR(adr, typ, (long)(size), (long)(n), P)

#define __INITYP(t, t0, level) \
   t##__typ= &t##__desc.blksz; \
   memcpy(t##__desc.base, t0##__typ - __BASEOFF, level*sizeof(long)); \
   t##__desc.base[level]=t##__typ; \
   t##__desc.module=(long)m; \
   if(t##__desc.blksz!=sizeof(struct t)) __HALT(-15); \
   t##__desc.blksz=(t##__desc.blksz+5*sizeof(long)-1)/(4*sizeof(long))*(4*sizeof(long)); \
   SYSTEM_REGTYP(m, (long)&t##__desc.next); \
   SYSTEM_INHERIT(t##__typ, t0##__typ)

/* Oberon-2 type bound procedures support */
#define __INITBP(t, proc, num)   *(t##__typ-(__TPROC0OFF+num))=(long)proc
#define __SEND(typ, num, rettyp, parlist)   ((rettyp(*)())(*(typ-(__TPROC0OFF+num))))parlist

/* runtime system variables */
extern LONGINT SYSTEM_argc;
extern LONGINT SYSTEM_argv;
extern void (*SYSTEM_Halt)();
extern LONGINT SYSTEM_halt;
extern LONGINT SYSTEM_assert;
extern SYSTEM_PTR SYSTEM_modules;
extern LONGINT SYSTEM_heapsize;
extern LONGINT SYSTEM_allocated;
extern LONGINT SYSTEM_lock;
extern SHORTINT SYSTEM_gclock;
extern BOOLEAN SYSTEM_interrupted;

#endif

Сергей Прохоренко писал(а):
Еще один вопрос: Ober-FireBird (и вообще, FireBird сама по себе) не стыкуется с Блэкбоксом и с GPCP?

Не знаю.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что с oo2c?
СообщениеДобавлено: Суббота, 20 Ноябрь, 2010 21:22 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2284
Откуда: Россия, Санкт-Петербург
Сергей Прохоренко писал(а):
Oberon-программам во время исполнения требуются динамический загрузчик и сборщик мусора. Кроме того, среда должна контролировать выход индексов массивов за границы диапазонов.

Вопрос: как это всё (динамически загружаемые модули, "мусор", индексы) будет обрабатываться, если программы на языке Си (откомпилированные из Oberon-программ) исполняются на "голой" операционной системе без специальной среды времени исполнения?

Что-то вы не очень хорошо себе представляете, как это всё устроено. Вспомните, как обрабатывается выход за границы массива в Си на "голой" операционной системе. "Kernel panic. Core dumped." Вот так же и в Обероне.

Динамический загрузчик тоже не обязателен. В XDS, например, его нет.

Сборщик мусора - это да. Не обязателен, но ОЧЕНЬ желателен. Но никто не мешает его вкомпилировать в экзешник. Это же не дух незримый, что витает над программой, а просто некий код, библиотека. Может быть внешняя, может быть внутренняя. Опять же, см. XDS.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что с oo2c?
СообщениеДобавлено: Суббота, 20 Ноябрь, 2010 22:03 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2178
Откуда: Нижний Новгород
Сергей Прохоренко писал(а):
Oberon-программам во время исполнения требуются динамический загрузчик и сборщик мусора. Кроме того, среда должна контролировать выход индексов массивов за границы диапазонов.

Должна ли? В каком пункте Oberon report'a про это сказано? Ткните носом, плиз.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что с oo2c?
СообщениеДобавлено: Суббота, 20 Ноябрь, 2010 22:45 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1158
Откуда: Tel-Aviv
Цитата:
Тут есть громадный плюс: избавляемся от лицензии BB.

И приобретаем ... лицензию GPL. А чем она лучше лицензии BB?
Вопросы лицензий мы уже обсуждали в другой теме.

Цитата:
Роман, не желаете взяться?
Пока не вижу необходимости. Как появится - посмотрю.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что с oo2c?
СообщениеДобавлено: Воскресенье, 21 Ноябрь, 2010 01:43 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2178
Откуда: Нижний Новгород
Я кстати, давеча пробовал собирать oo2c под линуксом и под haiku. Что-то у меня не склеилось. Ну, т.е. оно всё собралось конечно, но hello world банально падал.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что с oo2c?
СообщениеДобавлено: Воскресенье, 21 Ноябрь, 2010 01:52 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2178
Откуда: Нижний Новгород
Роман М. писал(а):
Цитата:
Тут есть громадный плюс: избавляемся от лицензии BB.

И приобретаем ... лицензию GPL. А чем она лучше лицензии BB?
Вопросы лицензий мы уже обсуждали в другой теме.

У вас тут ошибочка. Там КОМПИЛЯТОР под GPL, а вот рантайм и все либы -- под LGPL. Т.о. всё что собрано oo2c может быть под ЛЮБОЙ лицензией. Хоть под Eula.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что с oo2c?
СообщениеДобавлено: Воскресенье, 21 Ноябрь, 2010 01:59 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2178
Откуда: Нижний Новгород
Такс. Сейчас собрал под Linux. Попробую какой-нибудь тестик запустить.
Да, в комплекте также имеются инструкции как собрать под Win32.
Также искаропки оно собирается под MacOS X и всякое прочее разное. Т.о. это далеко не linux only решение.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что с oo2c?
СообщениеДобавлено: Воскресенье, 21 Ноябрь, 2010 02:05 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2178
Откуда: Нижний Новгород
Проверил. Работает. Значит проблемы видимо только в Haiku и в моих кривых руках там.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что с oo2c?
СообщениеДобавлено: Воскресенье, 21 Ноябрь, 2010 07:50 

Зарегистрирован: Воскресенье, 03 Февраль, 2008 12:50
Сообщения: 226
Alexey Veselovsky писал(а):
Также искаропки оно собирается под MacOS X и всякое прочее разное.

Какая-то странная у Вас "коропка":
Код:
$ make
make -C stage0 -f Makefile.ext setup-src oo2c
test -h src || (rm -Rf src lib/src; cp -R ../src .; cp -R ../lib/src lib)
gcc -O2 -no-cpp-precomp -DGC_DARWIN_THREADS -D_REENTRANT -Ilib/src -I./obj -I./lib/obj -c ./lib/obj/ADT/ArrayList.c -o ./lib/obj/ADT/ArrayList.o
./lib/obj/ADT/ArrayList.c: In function ‘ADT_ArrayList__ArrayListDesc_Sort’:
./lib/obj/ADT/ArrayList.c:520: error: nested functions are disabled, use -fnested-functions to re-enable
make[1]: *** [lib/obj/ADT/ArrayList.o] Error 1
make: *** [stage0/oo2c] Error 2


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что с oo2c?
СообщениеДобавлено: Воскресенье, 21 Ноябрь, 2010 07:57 

Зарегистрирован: Воскресенье, 03 Февраль, 2008 12:50
Сообщения: 226
После добавления -fnested-functions в CFLAGS оно компилируется, но не собирается :D :
Код:
/usr/bin/libtool --tag=CXX --mode=compile gcc -O2 -fnested-functions -no-cpp-precomp -DGC_DARWIN_THREADS -D_REENTRANT -Ilib/src -Iobj -Ilib/obj -Iobj -Ilib/obj -c /Users/kemiisto/Downloads/oo2c_32-2.1.11/lib/src/RT0.c -o lib/obj/RT0.lo
/usr/bin/libtool: unknown option character `-' in: --tag=CXX
Usage: /usr/bin/libtool -static [-] file [...] [-filelist listfile[,dirname]] [-arch_only arch] [-sacLT]
Usage: /usr/bin/libtool -dynamic [-] file [...] [-filelist listfile[,dirname]] [-arch_only arch] [-o output] [-install_name name] [-compatibility_version #] [-current_version #] [-seg1addr 0x#] [-segs_read_only_addr 0x#] [-segs_read_write_addr 0x#] [-seg_addr_table <filename>] [-seg_addr_table_filename <file_system_path>] [-all_load] [-noall_load]
make: *** [lib/obj/liboo2c.la] Error 1


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что с oo2c?
СообщениеДобавлено: Воскресенье, 21 Ноябрь, 2010 14:27 

Зарегистрирован: Суббота, 06 Июнь, 2009 07:52
Сообщения: 329
Сергей Прохоренко писал(а):
Oberon-программам …сборщик мусора…
OO2C использует
GC


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что с oo2c?
СообщениеДобавлено: Воскресенье, 21 Ноябрь, 2010 15:02 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2178
Откуда: Нижний Новгород
kemiisto писал(а):
Alexey Veselovsky писал(а):
Также искаропки оно собирается под MacOS X и всякое прочее разное.

Какая-то странная у Вас "коропка":

README.MACOS читали? configure сделали?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что с oo2c?
СообщениеДобавлено: Воскресенье, 21 Ноябрь, 2010 16:07 

Зарегистрирован: Воскресенье, 03 Февраль, 2008 12:50
Сообщения: 226
Alexey Veselovsky писал(а):
kemiisto писал(а):
Alexey Veselovsky писал(а):
Также искаропки оно собирается под MacOS X и всякое прочее разное.

Какая-то странная у Вас "коропка":

README.MACOS читали? configure сделали?

Ну что ж я, совсем глупый что-ли? Всё делал. Если посмотреть на ошибку, то видно, что libtool не воспринимает какую-то опцию. Погуглив, обнаружил, что "коробочный" libtool от Apple is not GNU libtool.

А фразу
Цитата:
- If dynamic library support is required, install glibtool.
надо, конечно, чётче излагать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что с oo2c?
СообщениеДобавлено: Понедельник, 22 Ноябрь, 2010 18:21 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 169
Откуда: Украина, Днепропетровская обл.
Alexey Veselovsky писал(а):
Да, в комплекте также имеются инструкции как собрать под Win32.
Также искаропки оно собирается под MacOS X и всякое прочее разное. Т.о. это далеко не linux only решение.

Это очень хорошая новость! :D
Однако мне, как закоренелому виндузятнику, который только недавно начал принюхиваться к линуксу, и может сказать про линукс много хорошего и ещё больше плохого, было бы приятно увидеть готовый setup.exe, и, может быть, кто-то из присутствующих здесь соберёт его? Если это возможно, конечно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что с oo2c?
СообщениеДобавлено: Пятница, 08 Июль, 2011 17:52 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2284
Откуда: Россия, Санкт-Петербург
Скачал OO2C последней версии 2.1.11, хочу заставить его работать под MinGW. Опыта работы с MinGW у меня ноль, и с GCC столько же. Буду здесь делиться своими наблюдениями и спрашивать совета у опытных товарищей. Если нужно, могу создать новую тему, но мне показалось, что попытка запустить OO2C под MinGW - вполне в духе ответа на вопрос темы "Что с oo2c?"

Первым делом почитал readme.win32 и http://www.mingw.org/wiki/InstallationHOWTOforMinGW
Понял, что пробелы в путях недопустимы. Решил ставить всё в свой обычный каталог d:\Programs\Dev
Скачал автоматизированный инсталлер MinGW (запустил без прав администратора), разрешил скачать последние "repostory catalogues", галочками выбрал установить только "С Compiler" и оставил скачивать пакеты. В результате получил каталог d:\Programs\Dev\MinGW размером 81 Мб.
Скачал стабильную версию сборщика мусора (GC 6.8).

Стал читать инструкции по установке GC, попробовал первую команду и понял, что если в cmd.exe написать "./configure", то это не работает : )
В заголовке файла "configure" сказано "#! /bin/sh". Где-то давно я читал, что это указание на программу-интерпретатор, которая должна данный скрипт понимать и выполнять. Установленный портативный MsysGit подсказал мне, что это ни кто иной как Bash. Наверное, зря я снял галочку с "MSYS Basic System" при установке MinGW. Снова запустил установщик, указал всё как раньше, добавил галочку "MSYS Basic System".

После обновления размер каталога MinGW увеличился до 106 Мб, внутри появились bash.exe и sh.exe (идентичные по содержанию). Причём появились они в каталоге MinGW/msys/1.0/bin, а не в MinGW/bin, как я ожидал. Видимо, этот путь тоже надо будет добавить в переменную окружения PATH.

Дальше запускаю bash.exe, и не понимаю, что делать. По команде "cd" он выдаёт "HOME not set", а как его задать я не знаю. Как добавить пути к MinGW тоже не знаю. Решил пойти через cmd. Распаковал GC в каталог d:\Programs\Dev\GC, запустил cmd.exe в этом каталоге и первым делом выполнил "set PATH=d:\Programs\Dev\MinGW;d:\Programs\Dev\MinGW\msys\1.0\bin;%PATH%". Затем запустил bash, и уже в нём - "./configure".

Вот что получилось:
Код:
d:\Programs\Dev\GC>bash
bash-3.1$ ./configure
checking build system type... i686-pc-mingw32
checking host system type... i686-pc-mingw32
checking target system type... i686-pc-mingw32
checking GC version numbers... major=6 minor=8
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... no
checking for cc... no
checking for cc... no
checking for cl... no
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details.
bash-3.1$ $path
bash-3.1$ $path$
bash: $: command not found
bash-3.1$ $path
bash-3.1$ cat $path
Вроде бы всё хорошо и правильно, только GCC почему-то не нашёлся.

Тут до меня дошло, что имена переменных окружения, наверное, регистрозависимые. Написал $PATH, и получил список путей. Так, уже хорошо, хотя как дополнить этот список пока не понятно.

Вспомнил, что в документации упоминалась команда mount (скрипт с таким именем я уже заприметил в MinGW/msys/1.0/bin/). Запустил в Bash, и увидел список смонтированных каталогов. MinGW/bin не был никуда смонтирован. Может быть, поэтому и не нашёлся GCC?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что с oo2c?
СообщениеДобавлено: Пятница, 08 Июль, 2011 18:40 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2284
Откуда: Россия, Санкт-Петербург
Подглядел в Гугле, как задать переменную окружения в Bash, после чего выполнил команду "PATH=/mingw/bin:$PATH" и снова запустил "./configure". На этот раз компилятор GCC нашёлся, была проведена ещё целая куча проверок и, наконец, созданы make-файлы.

Команда make отработала успешно, "make gctest.exe" тоже. Программа gctest.exe выдала в gc.log сообщение "Collector appears to work". Команда "make install" установила скомпилированную библиотеку, заголовочные файлы и документацию в каталог d:\Programs\Dev\MinGW\msys\local\.


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

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


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

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


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

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