OberonCore https://forum.oberoncore.ru/ |
|
Что с oo2c? https://forum.oberoncore.ru/viewtopic.php?f=30&t=1951 |
Страница 1 из 6 |
Автор: | Alexey Veselovsky [ Среда, 14 Октябрь, 2009 14:31 ] |
Заголовок сообщения: | Что с oo2c? |
Из репозитория дебиана пакеты убраны. Официальный сайт -- http://www.uni-kl.de/OOC/ мертв, проект на sf.net (http://sourceforge.net/projects/ooc/) не обновлялся с начала года + там нет странички с описанием проекта, т.е. http://ooc.sourceforge.net/ -- пустая страница. (про то что последний релиз датирован 2005 годом я промолчу, в принципе, если оно стабильно, то это нормально). Что с ними приключилось то? |
Автор: | Oleg N. Cher [ Суббота, 20 Ноябрь, 2010 12:59 ] |
Заголовок сообщения: | Re: Что с oo2c? |
Видимо, это проект одного автора, как и много других проектов на Обероне. Если проект заглох, но остаётся актуальным и интересным, надо его подхватить. А 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 Призываю автора откликнуться. Господа, ну нельзя же зажиливать такие вещи, ими надо делиться! Для нашей же общей пользы. |
Автор: | Роман М. [ Суббота, 20 Ноябрь, 2010 15:50 ] |
Заголовок сообщения: | Re: Что с oo2c? |
Ты об этом: Ober-FireBird ? |
Автор: | Сергей Прохоренко [ Суббота, 20 Ноябрь, 2010 18:57 ] |
Заголовок сообщения: | Re: Что с oo2c? |
Oberon-программам во время исполнения требуются динамический загрузчик и сборщик мусора. Кроме того, среда должна контролировать выход индексов массивов за границы диапазонов. Вопрос: как это всё (динамически загружаемые модули, "мусор", индексы) будет обрабатываться, если программы на языке Си (откомпилированные из Oberon-программ) исполняются на "голой" операционной системе без специальной среды времени исполнения? Еще один вопрос: Ober-FireBird (и вообще, FireBird сама по себе) не стыкуется с Блэкбоксом и с GPCP? |
Автор: | Oleg N. Cher [ Суббота, 20 Ноябрь, 2010 21:16 ] |
Заголовок сообщения: | Re: Что с oo2c? |
Роман М. писал(а): Ты об этом: 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? Не знаю. |
Автор: | Александр Ильин [ Суббота, 20 Ноябрь, 2010 21:22 ] |
Заголовок сообщения: | Re: Что с oo2c? |
Сергей Прохоренко писал(а): Oberon-программам во время исполнения требуются динамический загрузчик и сборщик мусора. Кроме того, среда должна контролировать выход индексов массивов за границы диапазонов. Вопрос: как это всё (динамически загружаемые модули, "мусор", индексы) будет обрабатываться, если программы на языке Си (откомпилированные из Oberon-программ) исполняются на "голой" операционной системе без специальной среды времени исполнения? Что-то вы не очень хорошо себе представляете, как это всё устроено. Вспомните, как обрабатывается выход за границы массива в Си на "голой" операционной системе. "Kernel panic. Core dumped." Вот так же и в Обероне. Динамический загрузчик тоже не обязателен. В XDS, например, его нет. Сборщик мусора - это да. Не обязателен, но ОЧЕНЬ желателен. Но никто не мешает его вкомпилировать в экзешник. Это же не дух незримый, что витает над программой, а просто некий код, библиотека. Может быть внешняя, может быть внутренняя. Опять же, см. XDS. |
Автор: | Alexey Veselovsky [ Суббота, 20 Ноябрь, 2010 22:03 ] |
Заголовок сообщения: | Re: Что с oo2c? |
Сергей Прохоренко писал(а): Oberon-программам во время исполнения требуются динамический загрузчик и сборщик мусора. Кроме того, среда должна контролировать выход индексов массивов за границы диапазонов. Должна ли? В каком пункте Oberon report'a про это сказано? Ткните носом, плиз. |
Автор: | Роман М. [ Суббота, 20 Ноябрь, 2010 22:45 ] |
Заголовок сообщения: | Re: Что с oo2c? |
Цитата: Тут есть громадный плюс: избавляемся от лицензии BB. И приобретаем ... лицензию GPL. А чем она лучше лицензии BB? Вопросы лицензий мы уже обсуждали в другой теме. Цитата: Роман, не желаете взяться? Пока не вижу необходимости. Как появится - посмотрю.
|
Автор: | Alexey Veselovsky [ Воскресенье, 21 Ноябрь, 2010 01:43 ] |
Заголовок сообщения: | Re: Что с oo2c? |
Я кстати, давеча пробовал собирать oo2c под линуксом и под haiku. Что-то у меня не склеилось. Ну, т.е. оно всё собралось конечно, но hello world банально падал. |
Автор: | Alexey Veselovsky [ Воскресенье, 21 Ноябрь, 2010 01:52 ] |
Заголовок сообщения: | Re: Что с oo2c? |
Роман М. писал(а): Цитата: Тут есть громадный плюс: избавляемся от лицензии BB. И приобретаем ... лицензию GPL. А чем она лучше лицензии BB? Вопросы лицензий мы уже обсуждали в другой теме. У вас тут ошибочка. Там КОМПИЛЯТОР под GPL, а вот рантайм и все либы -- под LGPL. Т.о. всё что собрано oo2c может быть под ЛЮБОЙ лицензией. Хоть под Eula. |
Автор: | Alexey Veselovsky [ Воскресенье, 21 Ноябрь, 2010 01:59 ] |
Заголовок сообщения: | Re: Что с oo2c? |
Такс. Сейчас собрал под Linux. Попробую какой-нибудь тестик запустить. Да, в комплекте также имеются инструкции как собрать под Win32. Также искаропки оно собирается под MacOS X и всякое прочее разное. Т.о. это далеко не linux only решение. |
Автор: | Alexey Veselovsky [ Воскресенье, 21 Ноябрь, 2010 02:05 ] |
Заголовок сообщения: | Re: Что с oo2c? |
Проверил. Работает. Значит проблемы видимо только в Haiku и в моих кривых руках там. |
Автор: | kemiisto [ Воскресенье, 21 Ноябрь, 2010 07:50 ] |
Заголовок сообщения: | Re: Что с oo2c? |
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 |
Автор: | kemiisto [ Воскресенье, 21 Ноябрь, 2010 07:57 ] |
Заголовок сообщения: | Re: Что с oo2c? |
После добавления -fnested-functions в CFLAGS оно компилируется, но не собирается : Код: /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 |
Автор: | id_ler [ Воскресенье, 21 Ноябрь, 2010 14:27 ] |
Заголовок сообщения: | Re: Что с oo2c? |
Сергей Прохоренко писал(а): Oberon-программам …сборщик мусора… OO2C использует GC |
Автор: | Alexey Veselovsky [ Воскресенье, 21 Ноябрь, 2010 15:02 ] |
Заголовок сообщения: | Re: Что с oo2c? |
kemiisto писал(а): Alexey Veselovsky писал(а): Также искаропки оно собирается под MacOS X и всякое прочее разное. Какая-то странная у Вас "коропка": README.MACOS читали? configure сделали? |
Автор: | kemiisto [ Воскресенье, 21 Ноябрь, 2010 16:07 ] |
Заголовок сообщения: | Re: Что с oo2c? |
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. надо, конечно, чётче излагать.
|
Автор: | Oleg N. Cher [ Понедельник, 22 Ноябрь, 2010 18:21 ] |
Заголовок сообщения: | Re: Что с oo2c? |
Alexey Veselovsky писал(а): Да, в комплекте также имеются инструкции как собрать под Win32. Также искаропки оно собирается под MacOS X и всякое прочее разное. Т.о. это далеко не linux only решение. Это очень хорошая новость! Однако мне, как закоренелому виндузятнику, который только недавно начал принюхиваться к линуксу, и может сказать про линукс много хорошего и ещё больше плохого, было бы приятно увидеть готовый setup.exe, и, может быть, кто-то из присутствующих здесь соберёт его? Если это возможно, конечно. |
Автор: | Александр Ильин [ Пятница, 08 Июль, 2011 17:52 ] |
Заголовок сообщения: | Re: Что с oo2c? |
Скачал 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 Вроде бы всё хорошо и правильно, только GCC почему-то не нашёлся.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 Тут до меня дошло, что имена переменных окружения, наверное, регистрозависимые. Написал $PATH, и получил список путей. Так, уже хорошо, хотя как дополнить этот список пока не понятно. Вспомнил, что в документации упоминалась команда mount (скрипт с таким именем я уже заприметил в MinGW/msys/1.0/bin/). Запустил в Bash, и увидел список смонтированных каталогов. MinGW/bin не был никуда смонтирован. Может быть, поэтому и не нашёлся GCC? |
Автор: | Александр Ильин [ Пятница, 08 Июль, 2011 18:40 ] |
Заголовок сообщения: | Re: Что с oo2c? |
Подглядел в Гугле, как задать переменную окружения в 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\. |
Страница 1 из 6 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |