@cepa, wybacz ale sam jesteś opóźniony chyba, przeczytaj jeszcze raz drugi post. W C funkcje standardowe są widoczne i bez nagłówków dlatego kompilator ostrzega, że deklarowana jest funkcja o innym prototypie od znanego, nikt o libc nie mówi, przecież tam jest generowany tylko ELF, bez linkowania!
@topic, Pelczar faktycznie zawalił - ld na Linuksie nie łyka czystego COFF-a domyślnie z tego co widzę, druga sprawa to to, że autor zapomniał o różnicy w generowaniu symboli przez gcc na Windowsie i Linuksie - prefix '_'. Jeszcze inna, że w paczce jeden plik nazywa się inaczej. Czyli do zrobienia:
- zmienić nazwę funkcji\skompilować z generowaniem '_' plik .c
- zmienić nazwę pliku na zgodną z tą z kursu
- skompilować plik .asm do ELF-a zamiast COFF-a
- tyle.
Logi z mojego Debiana:
baiji@kelpie:~$ wget -q binboy.sphere.pl/down.php?idmk=34 -O os.zip
baiji@kelpie:~$ unzip os.zip
Archive: os.zip
creating: doc1_files/
inflating: doc1_files/kernel.ld
inflating: doc1_files/main.c
inflating: doc1_files/start.asm
baiji@kelpie:~$ mv doc1_files/ os
baiji@kelpie:~$ cd os/
baiji@kelpie:~/os$ sed -e 's/\(start_kernel\)/_\1/' main.c > kernel.c
baiji@kelpie:~/os$ nasm start.asm -f elf -o start.o
baiji@kelpie:~/os$ ld -Tkernel.ld -o kernel.bin start.o kernel.o
baiji@kelpie:~/os$ ls -lh kernel.o
-rw-r--r-- 1 baiji baiji 1,1K 2008-12-21 15:12 kernel.o
Nom, skompilowało się tak jak powinno. W sumie Pelczar jeszcze trochę drobnych błędów popełnił i napisał kilka głupot ale...
Tak na przyszłość - proponuję zapoznać się z podstawami żeby uniknąć takich problemów.
@piętro niżej, tak błąd... czytanie ze zrozumieniem się kłania.