[Comm] Компиляция linux-0.0.1 =>?
anterior
=?iso-8859-1?q?anterior_=CE=C1_inbox=2Eru?=
Вс Сен 4 11:45:37 MSD 2005
Привет пингвиноидам! Тут я вобщем раздобыл linux-0.01.tar.gz. Хотел на ее
основе написать свою ОС (побаловаться ;) Но чего-то не могу скомпилировать
linux-0.01(без изменений в коде). Видать GCC, GAS не подходят :( Может
кто-то из вас пробовал баловаться так же как и я? Во первых мне пришлось
подкорректировать Makefile. Часть его выглядела так:
AS86 =as -0 -a
CC86 =cc -0
LD86 =ld -0
AS =gas
LD =gld
LDFLAGS =-s -x -M
CC =gcc
CFLAGS =-Wall -O -fstrength-reduce -fomit-frame-pointer -fcombine-regs
CPP =gcc -E -nostdinc -Iinclude
ARCHIVES=kernel/kernel.o mm/mm.o fs/fs.o
LIBS =lib/lib.a
.c.s:
$(CC) $(CFLAGS) \
-nostdinc -Iinclude -S -o $*.s $<
.s.o:
$(AS) -c -o $*.o $<
.c.o:
$(CC) $(CFLAGS) \
-nostdinc -Iinclude -c -o $*.o $<
all: Image
Image: boot/boot tools/system tools/build
tools/build boot/boot tools/system > Image
sync
Я его изменил. Теперь он выглядел так:
AS86 =as86 -0 -a
CC86 =cc -0
LD86 =ld86 -0
AS =as
LD =ld
LDFLAGS =-s -x -M
CC =cc
CFLAGS =-Wall -O -fstrength-reduce -fomit-frame-pointer # Я убрал флаг
-fcombine-regs (он отсутствует в gcc)
CPP =cpp -E -nostdinc -Iinclude
ARCHIVES=kernel/kernel.o mm/mm.o fs/fs.o
LIBS =lib/lib.a
.c.s:
$(CC) $(CFLAGS) \
-nostdinc -Iinclude -S -o $*.s $<
.s.o:
$(AS) -c -o $*.o $< # Я убрал аттрибут -c так как тоже его нет в AS
.c.o:
$(CC) $(CFLAGS) \
-nostdinc -Iinclude -c -o $*.o $<
Ну понятное дело что теперь у меня вряд-ли что нибудь скомпилируется.
$make
as -o boot/head.o boot/head.s
boot/head.s: Assembler messages:
boot/head.s:168: Error: alignment not a power of 2
make: *** [boot/head.o] Ошибка 1
Это первая ошибка. Далее шли разного рода ошибки. В основном были там где
__asm__(... Их приходилось просто убирать. Но и в конце концов выходили
ошибки Undefined reference. Вот такие дела. Может все равно возможно
как-то скомпилировать это ядро. И еще: Кто знает киньте какие ссылки на
статьи по написанию ОС с использованием C/C++.
gcc version 3.2.3 (ALT Linux, build 3.2.3-alt2)
GNU ld version 2.14.90.0.6 20030820
ld86 version: 0.16.3
--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
Подробная информация о списке рассылки community