OberonCore https://forum.oberoncore.ru/ |
|
Ошибка компиляции при попытке запустить XDS на Ubuntu 9.10 https://forum.oberoncore.ru/viewtopic.php?f=30&t=2568 |
Страница 1 из 1 |
Автор: | Иван Денисов [ Понедельник, 19 Апрель, 2010 03:32 ] |
Заголовок сообщения: | Ошибка компиляции при попытке запустить XDS на Ubuntu 9.10 |
XDS не хочет компелироваться на Ubuntu 9.10 Кто нибудь сталкивался с подобной проблемой? Код: ivan@ivan-laptop:~/xds/lib/x86$ make -f lib.mkf
gcc -D_unix -D_linux -DX2C_no_spawn -DX2C_strcmp -DX2C_native_library -O2 -fno-strength-reduce -I../../include -c -o ../../C/X2C.o ../../C/X2C.c ../../C/X2C.c:192:24: error: linux/user.h: No such file or directory In file included from ../../C/X2C.c:193: /usr/include/asm/sigcontext.h:56: error: redefinition of ‘struct _fpreg’ /usr/include/asm/sigcontext.h:61: error: redefinition of ‘struct _fpxreg’ /usr/include/asm/sigcontext.h:67: error: redefinition of ‘struct _xmmreg’ /usr/include/asm/sigcontext.h:71: error: redefinition of ‘struct _fpstate’ /usr/include/asm/sigcontext.h:104: error: redefinition of ‘struct sigcontext’ ../../C/X2C.c: In function ‘fp_error’: ../../C/X2C.c:797: error: invalid use of undefined type ‘struct user_i387_struct’ ../../C/X2C.c:798: error: invalid use of undefined type ‘struct user_i387_struct’ ../../C/X2C.c: In function ‘X2C_SIGSEGV_handler’: ../../C/X2C.c:821: warning: passing argument 2 of ‘signal’ from incompatible pointer type /usr/include/signal.h:101: note: expected ‘__sighandler_t’ but argument is of type ‘void (*)(int, struct sigcontext)’ ../../C/X2C.c: In function ‘X2C_BEGIN’: ../../C/X2C.c:908: warning: passing argument 2 of ‘signal’ from incompatible pointer type /usr/include/signal.h:101: note: expected ‘__sighandler_t’ but argument is of type ‘void (*)(int, struct sigcontext)’ make: *** [../../C/X2C.o] Ошибка 1 |
Автор: | Иван Денисов [ Понедельник, 19 Апрель, 2010 05:02 ] |
Заголовок сообщения: | Re: Ошибка компиляции при попытке запустить XDS на Ubuntu 9. |
Нашел оксфордский компилятор, http://spivey.oriel.ox.ac.uk/corner/Ins ... elease_2.8 Пока очень все понятно, прекрасно работает на Ubuntu. Сделал простейшую программу на обероне, и собрал ее в бинарник. Сразу в комплекте идет хелп по имеющимся немногочисленным (15) модулям. |
Автор: | Борис Рюмшин [ Понедельник, 19 Апрель, 2010 14:36 ] |
Заголовок сообщения: | Re: Ошибка компиляции при попытке запустить XDS на Ubuntu 9. |
divan писал(а): Код: ../../C/X2C.c:192:24: error: linux/user.h: No such file or directory Не хватает заголовочных файлов.... кабы даже не от ядра. Странно. |
Автор: | Valery Solovey [ Понедельник, 19 Апрель, 2010 15:15 ] |
Заголовок сообщения: | Re: Ошибка компиляции при попытке запустить XDS на Ubuntu 9. |
может, когда последний раз XDS обновлялся, то в ядре такой файл был? |
Автор: | Димыч [ Понедельник, 19 Апрель, 2010 15:35 ] |
Заголовок сообщения: | Re: Ошибка компиляции при попытке запустить XDS на Ubuntu 9. |
А исходники Linux установлены? |
Автор: | Иван Денисов [ Вторник, 20 Апрель, 2010 02:29 ] |
Заголовок сообщения: | Re: Ошибка компиляции при попытке запустить XDS на Ubuntu 9. |
Думаю, это исходники нашел... (не ахти какой опытный пользователь линукса) /usr/include/signal.h Код: /* Set the handler for the signal SIG to HANDLER, returning the old handler, or SIG_ERR on error. By default `signal' has the BSD semantic. */ __BEGIN_NAMESPACE_STD #ifdef __USE_BSD extern __sighandler_t signal (int __sig, __sighandler_t __handler) __THROW; #else /* Make sure the used `signal' implementation is the SVID version. */ # ifdef __REDIRECT_NTH extern __sighandler_t __REDIRECT_NTH (signal, (int __sig, __sighandler_t __handler), __sysv_signal); # else # define signal __sysv_signal # endif #endif __END_NAMESPACE_STD extern __sighandler_t signal (int __sig, __sighandler_t __handler) злосчастная 101 строка на которую ругается make |
Автор: | AVC [ Вторник, 20 Апрель, 2010 02:41 ] |
Заголовок сообщения: | Re: Ошибка компиляции при попытке запустить XDS на Ubuntu 9. |
divan писал(а): Думаю, это исходники нашел... (не ахти какой опытный пользователь линкса) /usr/include/signal.h Код: /* Set the handler for the signal SIG to HANDLER, returning the old handler, or SIG_ERR on error. By default `signal' has the BSD semantic. */ __BEGIN_NAMESPACE_STD #ifdef __USE_BSD extern __sighandler_t signal (int __sig, __sighandler_t __handler) __THROW; #else /* Make sure the used `signal' implementation is the SVID version. */ # ifdef __REDIRECT_NTH extern __sighandler_t __REDIRECT_NTH (signal, (int __sig, __sighandler_t __handler), __sysv_signal); # else # define signal __sysv_signal # endif #endif __END_NAMESPACE_STD extern __sighandler_t signal (int __sig, __sighandler_t __handler) злосчастная 101 строка на которую ругается make Компилятор ругается на несовпадение типов __sighandler_t и struct sigcontext: Цитата: ../../C/X2C.c:821: warning: passing argument 2 of ‘signal’ from incompatible pointer type Сейчас нет под рукой XDS для Линукса, но заслуживают внимания комментарии /usr/include/signal.h:101: note: expected ‘__sighandler_t’ but argument is of type ‘void (*)(int, struct sigcontext)’ Код: By default `signal' has the BSD semantic. */ иКод: /* Make sure the used `signal' implementation is the SVID version. */
|
Автор: | Alexey Veselovsky [ Вторник, 20 Апрель, 2010 15:32 ] |
Заголовок сообщения: | Re: Ошибка компиляции при попытке запустить XDS на Ubuntu 9. |
Гм. Исходники компилятора XDS стали публично доступны? Я что-то пропустил? Кроме того, нафига _компилятору_, заголовки ядра? Это ж не драйвер какой. Вполне себе пользовательсткое приложение. |
Автор: | igor [ Вторник, 20 Апрель, 2010 16:22 ] |
Заголовок сообщения: | Re: Ошибка компиляции при попытке запустить XDS на Ubuntu 9. |
Alexey Veselovsky писал(а): Гм. Исходники компилятора XDS стали публично доступны? Я что-то пропустил? Речь шла об исходниках Linux.Alexey Veselovsky писал(а): Кроме того, нафига _компилятору_, заголовки ядра? Это ж не драйвер какой. Вполне себе пользовательсткое приложение. Вообще-то, компиляторы классифицируются как системные приложения, а не прикладные.
|
Автор: | Alexey Veselovsky [ Вторник, 20 Апрель, 2010 16:32 ] |
Заголовок сообщения: | Re: Ошибка компиляции при попытке запустить XDS на Ubuntu 9. |
igor писал(а): Alexey Veselovsky писал(а): Гм. Исходники компилятора XDS стали публично доступны? Я что-то пропустил? Речь шла об исходниках Linux."XDS не хочет компелироваться на Ubuntu 9.10" -- где тут про исходники linux'a? Поскольку XDS компилируется, следовательно есть и его исходники (которые мы как раз компилируем). Нет? igor писал(а): Alexey Veselovsky писал(а): Кроме того, нафига _компилятору_, заголовки ядра? Это ж не драйвер какой. Вполне себе пользовательсткое приложение. Вообще-то, компиляторы классифицируются как системные приложения, а не прикладные.А как не классифицируй любой транслятор тупо на вход получает один файл и на выходе дает другой файл. По сути ему ничего кроме работы с файлами от системы не нужно. Т.е. компилятору на самом деле от ОС нужно _меньше_ чем скажем какому-нибудь файловому менеджеру ![]() Для сборки библиотек языка (рантайм), да, будет нужно кое-что ещё. Но это опять же, не выходит за рамки обычного пользовательского приложения. И да, это никак не противоречит тому, что компилятор это системное ПО а не прикладное ПО ![]() Эта классификация по сфере применимости ПО, а не по тому, что ему требуется от среды в которой оно работает. |
Автор: | igor [ Вторник, 20 Апрель, 2010 16:49 ] |
Заголовок сообщения: | Re: Ошибка компиляции при попытке запустить XDS на Ubuntu 9. |
Alexey Veselovsky писал(а): Нет? Думаю, что нет. Хотя не уверен.Топикстартер знает. И Димыч, который спросил про исходники Линукс, а divan ему ответил. И тут следом Ваш удивлённый вопрос ![]() Alexey Veselovsky писал(а): А как не классифицируй ... Ладно, не будем отвлекаться от темы, а то сожрут ![]() |
Автор: | Иван Денисов [ Четверг, 22 Апрель, 2010 00:35 ] |
Заголовок сообщения: | Re: Ошибка при компиляции библиотек XDS на Ubuntu 9.10 |
Собственно началось с того, что решил XDS Revival опробовать на Убунте, взял вот с этого милого сайта с цветочками http://oberonrevival.sourceforge.net/download попробовал скомпилировать пример hello.ob2 но вылетела ошибка, в README написано мол «Может потребоваться перестроение библиотеки XDS.» То бишь сам компилятор с закрытыми кодами, а библиотеки с открытыми, наверное так. После неудачи с этой самой компиляцией библиотек, скачал XDS с сайта http://www.excelsior-usa.com/xdsdl.html подумал, может там нет косяка, но после повторения описанной выше проблемы завел эту тему. Прошу прощения, что тему назвал коряво. Наверное надо переименовать в «Ошибка при компиляции библиотек XDS на Ubuntu 9.10» |
Автор: | Иван Денисов [ Четверг, 22 Апрель, 2010 06:04 ] | ||
Заголовок сообщения: | Re: Ошибка компиляции при попытке запустить XDS на Ubuntu 9. | ||
Поначалу разочаровался в оксфордском компиляторе. Подумал, что создает не независимые бинарники, а файлы, которые без интерпретатора в системе не работают. Вот что показал hexedit Код: 00000000 23 21 2F 75 73 72 2F 6C 69 62 2F 6F 62 63 2F 6F #!/usr/lib/obc/o 00000010 62 78 6A 0A 2A B5 05 2A F2 F4 2A 93 F2 F4 2A 18 bxj.*..*..*...*. Потом нашел, что автор пишет в FAQ о компиляторе, что так и рассчитано. Но если указать ключ -С при компиляции, то собирается независимое .ELF приложение (программку приложил тестовую). Код: 00000000 7F 45 4C 46 01 01 01 00 00 00 00 00 00 00 00 00 .ELF............
00000010 02 00 03 00 01 00 00 00 20 8D 04 08 34 00 00 00 ........ ...4...
|
Автор: | Александр Ильин [ Четверг, 22 Апрель, 2010 06:19 ] |
Заголовок сообщения: | Re: Ошибка компиляции при попытке запустить XDS на Ubuntu 9. |
Написано, что под Windows работают и без интерпретатора в системе, так как интерпретатор встроен в конечный файл. |
Автор: | Иван Денисов [ Четверг, 22 Апрель, 2010 06:36 ] |
Заголовок сообщения: | Re: Ошибка компиляции при попытке запустить XDS на Ubuntu 9. |
Только что исправил, ну значит и для Linux и для Windows собрать реально одним фалом )) все в порядке. Вопрос отпал. |
Автор: | Борис Рюмшин [ Четверг, 22 Апрель, 2010 07:42 ] |
Заголовок сообщения: | Re: Ошибка компиляции при попытке запустить XDS на Ubuntu 9. |
А не смотрели, ради спортивного интереса, что он там на входе интерпретатора использует? Ну то есть какой тип "машинного кода"? |
Автор: | Geniepro [ Четверг, 22 Апрель, 2010 08:18 ] |
Заголовок сообщения: | Re: Ошибка компиляции при попытке запустить XDS на Ubuntu 9. |
Борис Рюмшин писал(а): А не смотрели, ради спортивного интереса, что он там на входе интерпретатора использует? Ну то есть какой тип "машинного кода"? http://spivey.oriel.ox.ac.uk/corner/Oxf ... 2_compiler Цитата: ... I have developed from scratch a portable compiler that translates Oberon-2 into bytecode, which can be either interpreted or dynamically translated into machine code. То есть какой-то байткод. Исходники компилятора доступны: http://spivey.oriel.ox.ac.uk/corner/Sof ... rogramming) Любопытно, почему этот транслятор написан не стандартным для оберонов методом раскрутки, а как-то гибридно -- компилятор на Окамле, а рантайм (с интерпретатором байткода) на Сях? |
Автор: | Geniepro [ Четверг, 22 Апрель, 2010 08:29 ] |
Заголовок сообщения: | Re: Ошибка компиляции при попытке запустить XDS на Ubuntu 9. |
А вот в одном из исходном файле транслятора icode.ml основная структура данных этого байткода (если я правильно понял): Код: (* icode -- type of intermediate instructions *)
type icode = CONST of kind * value (* Push constant (value) *) | SYMBOL of symbol | LOCAL of int (* Push address (offset) *) | LOAD of int (* Load (size) *) | STORE of int (* Store (size) *) | FIXCOPY (* Copy multiple values *) | FLEXCOPY (* Copy open array param *) | DUP of int (* Duplicate n'th value on stack (n) *) | POP of int (* Pop values (count) *) | SWAP (* Swap top two values on stack *) | STKMAP of symbol (* Stack map for call point *) | CALL of int * int (* Proc call (pcount, res size) *) | LINK (* Pass static link *) | SAVELINK (* Save static link in frame *) | RETURN of int (* Return from procedure (rsize) *) | MONOP of kind * op (* Unary operation (type, op) *) | BINOP of kind * op (* Binary operation *) | CONV of kind * kind (* Type conversion *) | ALIGN of int (* Align parameter (size) *) | BOUND of int (* Array bound check (line) *) | NCHECK of int (* Check for null pointer (line) *) | GCHECK of int (* Check statlink is zero (line) *) | ZCHECK of kind * int (* Check for zero divisor (line) *) | ERROR of int * int (* Runtime error (kind, line) *) | JUMP of codelab (* Unconditional branch (dest) *) | JUMPB of bool * codelab (* Jump on boolean *) | JUMPC of kind * op * codelab (* Cond. branch (type, cond, dest) *) | JCASE of codelab list (* Case jump *) | JRANGE of codelab (* Range jump *) | TYPETEST of int (* Type test (level) *) | LABEL of codelab (* Set code label *) | LINE of int (* Line number *) | NOP (* No-op *) | LDK of int * int (* Load constant (value, size) *) | INDEX of int (* PUSH s/BINOP Times/BINOP PlusA *) | LDL of int * int (* LOCAL n/LOAD s *) | STL of int * int (* LOCAL n/STORE s *) | LDG of int * int (* CONST k/LOAD s *) | STG of int * int (* CONST k/STORE s *) | LDI of int (* INDEX s/LOAD s *) | STI of int (* INDEX s/STORE s *) | LDNW of int (* PUSH n/LDI 4 *) | STNW of int (* PUSH n/STI 4 *) | LDEW of int (* LDLW 12/LDNW n *) | STEW of int (* LDLW 12/STNW n *) | INCL of int (* LDLW n/INC/STLW n *) | DECL of int (* LDLW n/DEC/STLW n *) | JUMPCZ of kind * op * codelab (* PUSH 0/JUMPC *) | TESTGEQ of codelab (* Case split = DUP 1/JUMPC Lt *) |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |