Newlib
-
--target=i586-kos32
Так не работает. Пишет, что нет такой цели. Видимо, дело в conf-файле.
Скорее всего.
Обновил либу и исправил некоторые ошибки.
http://code.google.com/p/kolibri-pe/dow ... 6_11_12.7z
Теперь при завершении программы закрываются все открытые файлы.
http://code.google.com/p/kolibri-pe/dow ... 6_11_12.7z
Теперь при завершении программы закрываются все открытые файлы.
binutils-2.20 в linux с GCC 4.7.2 у меня не собрались (как с патчем, так и без него).
Сделал патч для binutils-2.23.1, по образу и подобию лежащего в SVN.
Сделал патч для binutils-2.23.1, по образу и подобию лежащего в SVN.
Jaeger
Закинь его на свн.
Закинь его на свн.
Подскажите, как собрать newlib из исходников на SVN?
Пробовал собирать системным GCC и GCC из тулчейна, подробности под катом.
#ifndef WIN32
#define __stdcall
#define __fastcall
#endif
2. Попробовал собрать системным gcc с sysroot=(toolchain dir)
gcc -c -O2 -fomit-frame-pointer -m32 -march=i586 -mtune=i586 --sysroot=/home/john/Kolibri/cross -I ./include -o crt/crtdll.o crt/crtdll.c
gcc -m32 -march=i586 -mtune=i586 -c -o crt/chkstk.o crt/chkstk.S
gcc -m32 -march=i586 -mtune=i586 -c -o crt/exit.o crt/exit.S
gcc -m32 -march=i586 -mtune=i586 -c -o crt/setjmp.o crt/setjmp.S
crt/setjmp.S: Assembler messages:
crt/setjmp.S:32: Error: unknown pseudo-op: `.def'
crt/setjmp.S:32: Error: unknown pseudo-op: `.scl'
crt/setjmp.S:32: Error: Missing symbol name in directive
crt/setjmp.S:32: Error: нераспознанный тип символа 32
crt/setjmp.S:32: Error: unknown pseudo-op: `.endef'
crt/setjmp.S:66: Error: unknown pseudo-op: `.def'
crt/setjmp.S:66: Error: unknown pseudo-op: `.scl'
crt/setjmp.S:66: Error: Missing symbol name in directive
crt/setjmp.S:66: Error: нераспознанный тип символа 32
crt/setjmp.S:66: Error: unknown pseudo-op: `.endef'
make: *** [crt/setjmp.o] Ошибка 1
3. Попробовал собрать с помощью инструментов из тулчейна. Прописал в Makefile
SYSROOT = /home/john/Kolibri/cross
CC = $(SYSROOT)/bin/i586-pc-kos32-gcc
LD = $(SYSROOT)/bin/i586-pc-kos32-ld
AR = $(SYSROOT)/bin/i586-pc-kos32-ar
AS = $(SYSROOT)/bin/i586-pc-kos32-as
ASFLAGS = -m32 -march=i586 -mtune=i586
CFLAGS = -c -O2 -fomit-frame-pointer -m32 -march=i586 -mtune=i586 --sysroot=$(SYSROOT)
Вывод:
/home/john/Kolibri/cross/bin/i586-pc-kos32-gcc -c -O2 -fomit-frame-pointer -m32 -march=i586 -mtune=i586 --sysroot=/home/john/Kolibri/cross -I ./include -o crt/crtdll.o crt/crtdll.c
crt/crtdll.c: In function 'crt_startup':
crt/crtdll.c:85:5: warning: passing argument 2 of 'load_file' from incompatible pointer type [enabled by default]
In file included from crt/crtdll.c:10:0:
./include/sys/kos_io.h:72:7: note: expected 'size_t *' but argument is of type 'int *'
/tmp/cclg8P7P.s: Assembler messages:
/tmp/cclg8P7P.s:5: Warning: Псевдооперация .type используется вне .def/.endef: игнорируется.
/tmp/cclg8P7P.s:5: Error: junk at end of line, first unrecognized character is `_'
/tmp/cclg8P7P.s:33: Warning: Псевдооперация .size используется вне .def/.endef: игнорируется.
/tmp/cclg8P7P.s:33: Error: junk at end of line, first unrecognized character is `_'
/tmp/cclg8P7P.s:36: Warning: Псевдооперация .type используется вне .def/.endef: игнорируется.
/tmp/cclg8P7P.s:36: Error: junk at end of line, first unrecognized character is `_'
/tmp/cclg8P7P.s:44: Warning: Псевдооперация .size используется вне .def/.endef: игнорируется.
/tmp/cclg8P7P.s:44: Error: junk at end of line, first unrecognized character is `_'
/tmp/cclg8P7P.s:51: Warning: Псевдооперация .type используется вне .def/.endef: игнорируется.
/tmp/cclg8P7P.s:51: Error: junk at end of line, first unrecognized character is `c'
/tmp/cclg8P7P.s:134: Warning: Псевдооперация .size используется вне .def/.endef: игнорируется.
/tmp/cclg8P7P.s:134: Error: junk at end of line, first unrecognized character is `c'
make: *** [crt/crtdll.o] Ошибка 1
Пробовал собирать системным GCC и GCC из тулчейна, подробности под катом.
Spoiler:
1. Вначале сборка падала на crt/crtdll.c с сообщением, что не знает __fastcall и __stdcall - добавил в include/sys/kos_io.h#ifndef WIN32
#define __stdcall
#define __fastcall
#endif
2. Попробовал собрать системным gcc с sysroot=(toolchain dir)
gcc -c -O2 -fomit-frame-pointer -m32 -march=i586 -mtune=i586 --sysroot=/home/john/Kolibri/cross -I ./include -o crt/crtdll.o crt/crtdll.c
gcc -m32 -march=i586 -mtune=i586 -c -o crt/chkstk.o crt/chkstk.S
gcc -m32 -march=i586 -mtune=i586 -c -o crt/exit.o crt/exit.S
gcc -m32 -march=i586 -mtune=i586 -c -o crt/setjmp.o crt/setjmp.S
crt/setjmp.S: Assembler messages:
crt/setjmp.S:32: Error: unknown pseudo-op: `.def'
crt/setjmp.S:32: Error: unknown pseudo-op: `.scl'
crt/setjmp.S:32: Error: Missing symbol name in directive
crt/setjmp.S:32: Error: нераспознанный тип символа 32
crt/setjmp.S:32: Error: unknown pseudo-op: `.endef'
crt/setjmp.S:66: Error: unknown pseudo-op: `.def'
crt/setjmp.S:66: Error: unknown pseudo-op: `.scl'
crt/setjmp.S:66: Error: Missing symbol name in directive
crt/setjmp.S:66: Error: нераспознанный тип символа 32
crt/setjmp.S:66: Error: unknown pseudo-op: `.endef'
make: *** [crt/setjmp.o] Ошибка 1
3. Попробовал собрать с помощью инструментов из тулчейна. Прописал в Makefile
SYSROOT = /home/john/Kolibri/cross
CC = $(SYSROOT)/bin/i586-pc-kos32-gcc
LD = $(SYSROOT)/bin/i586-pc-kos32-ld
AR = $(SYSROOT)/bin/i586-pc-kos32-ar
AS = $(SYSROOT)/bin/i586-pc-kos32-as
ASFLAGS = -m32 -march=i586 -mtune=i586
CFLAGS = -c -O2 -fomit-frame-pointer -m32 -march=i586 -mtune=i586 --sysroot=$(SYSROOT)
Вывод:
/home/john/Kolibri/cross/bin/i586-pc-kos32-gcc -c -O2 -fomit-frame-pointer -m32 -march=i586 -mtune=i586 --sysroot=/home/john/Kolibri/cross -I ./include -o crt/crtdll.o crt/crtdll.c
crt/crtdll.c: In function 'crt_startup':
crt/crtdll.c:85:5: warning: passing argument 2 of 'load_file' from incompatible pointer type [enabled by default]
In file included from crt/crtdll.c:10:0:
./include/sys/kos_io.h:72:7: note: expected 'size_t *' but argument is of type 'int *'
/tmp/cclg8P7P.s: Assembler messages:
/tmp/cclg8P7P.s:5: Warning: Псевдооперация .type используется вне .def/.endef: игнорируется.
/tmp/cclg8P7P.s:5: Error: junk at end of line, first unrecognized character is `_'
/tmp/cclg8P7P.s:33: Warning: Псевдооперация .size используется вне .def/.endef: игнорируется.
/tmp/cclg8P7P.s:33: Error: junk at end of line, first unrecognized character is `_'
/tmp/cclg8P7P.s:36: Warning: Псевдооперация .type используется вне .def/.endef: игнорируется.
/tmp/cclg8P7P.s:36: Error: junk at end of line, first unrecognized character is `_'
/tmp/cclg8P7P.s:44: Warning: Псевдооперация .size используется вне .def/.endef: игнорируется.
/tmp/cclg8P7P.s:44: Error: junk at end of line, first unrecognized character is `_'
/tmp/cclg8P7P.s:51: Warning: Псевдооперация .type используется вне .def/.endef: игнорируется.
/tmp/cclg8P7P.s:51: Error: junk at end of line, first unrecognized character is `c'
/tmp/cclg8P7P.s:134: Warning: Псевдооперация .size используется вне .def/.endef: игнорируется.
/tmp/cclg8P7P.s:134: Error: junk at end of line, first unrecognized character is `c'
make: *** [crt/crtdll.o] Ошибка 1
#define __stdcall __attribute__((stdcall))
Возможно, используется какой-то не тот ассемблер для S-файлов.
Возможно, используется какой-то не тот ассемблер для S-файлов.
Jaeger
make static
Я собирал только под mingw32, кросскомпилятор не проверял.
make static
Я собирал только под mingw32, кросскомпилятор не проверял.
SoUrcerer
Похоже на то. Пока прописал для тех файлов, что не компилировались, отдельным правилом использование i586-pc-kos32-gcc.
Serge
При компиляции нескольких файлов из подкаталога math gcc ругается на отсутствие файла mconf.h (под mingw вместо него используется "cephes_mconf.h"). Где его можно найти?
Похоже на то. Пока прописал для тех файлов, что не компилировались, отдельным правилом использование i586-pc-kos32-gcc.
Serge
При компиляции нескольких файлов из подкаталога math gcc ругается на отсутствие файла mconf.h (под mingw вместо него используется "cephes_mconf.h"). Где его можно найти?
cephes_mconf.h в папке newlib/math. Просто переименуй.
Собрал при помощи mingw32, никаких изменений не потребовалось. Спасибо за помощь!
По-видимому, свой кросс-GCC я собрал криво, буду разбираться.
По-видимому, свой кросс-GCC я собрал криво, буду разбираться.
Jaeger
Я собирал по этому руководству. http://wiki.osdev.org/GCC_Cross-Compiler
Я собирал по этому руководству. http://wiki.osdev.org/GCC_Cross-Compiler
Свежие сборки
newlib с исправленной libm ftp://ftp.kolibrios.org/users/Serge/new ... 1_03_13.7z
и ffmpeg-1.1.3 ftp://ftp.kolibrios.org/users/Serge/new/ffmpeg-1.1.3.7z
newlib с исправленной libm ftp://ftp.kolibrios.org/users/Serge/new ... 1_03_13.7z
и ffmpeg-1.1.3 ftp://ftp.kolibrios.org/users/Serge/new/ffmpeg-1.1.3.7z
I don't understand how to use the newlib.
I tried translating this thread to spanish and english but it's not accurate.
I'll be grateful if someone can explain me in english what I have to do to use the newlib.
I tried translating this thread to spanish and english but it's not accurate.
I'll be grateful if someone can explain me in english what I have to do to use the newlib.
Who is online
Users browsing this forum: No registered users and 4 guests