[DJGPP] Problem z kompilacją

0

Mam problem. Napisałem proste jądro systemu operacyjnego wg. Kursu, który jest na tym serwerze. Jednak gdy kompiluje go tak jak tam jest pokazuje mi się coś takiego:

nasm start.asm -f coff -o start.o //To jest OK
gcc kernel.c -O2 -fomit-frame-pointer -c -o kernel.o // To też
ld -Tkernel.ld -o kernel.bin start.o kernel.o //A tu taki błąd:
start.o: file not recognized: File format not recognized

Czy ktoś wie co jest nie tak??
[sciana]
ps. Póżnij próbowałem skompilować dołączony do tego kursu kernel, ale jest to samo.

0

Ja mam ten sam problem:

[tuuresairon@localhost doc1_files]$ nasm start.asm -f coff -o start.o
[tuuresairon@localhost doc1_files]$ gcc main.c -O2 -fomit-frame-pointer -c -o kernel.o
main.c:9: warning: conflicting types for built-in function `puts'
[tuuresairon@localhost doc1_files]$ ld -Tkernel.ld -o kernel.bin start.o kernel.o
start.o: file not recognized: File format not recognized
[tuuresairon@localhost doc1_files]$

Jak zmieniłem format wyjściowy w nasm na bin to:

[tuuresairon@localhost doc1_files]$ nasm start.asm -f bin -o start.o
start.asm:9: error: binary output format does not support external references
start.asm:10: error: binary output format does not support external references
start.asm:11: error: binary output format does not support external references
start.asm:31: error: binary output format does not support external references
[tuuresairon@localhost doc1_files]$

Cóż, nie bawię się na codzień w takie rzeczy, chciałem tylko spróbować czy pójdzie :P

0

sprawdzcie czy w pliku *.ld macie na poczatku:

OUTPUT_FORMAT("binary")

0

kernel.ld:

OUTPUT_FORMAT("binary")
ENTRY("_start")
SECTIONS {
 .text 0x100000 : {
  code = . ; _code = . ;
  *(.text)
 }
 .data : {
  *(.data)
 }
 .bss : {
  bss = . ; _bss = . ;
  *(.bss)
  *(.COMMON)
 }
 end = . ; _end = . ;
}
0

Nikt mi nie pomógł, ale sam znalazłem rozwiązanie :)

Są dwie wersje tego projektu:
a) dla Dos/Windows
b) linux

podane w kursie komendy kompilacji odnoszą sie dla środowiska DOS

dla linuxa trzeba:
a) usunąć prefix _ (poza _start) w pliku start.asm
b) kompilować nasm -f elf -o start.o start.asm

i działa [browar] [browar] [browar]

1 użytkowników online, w tym zalogowanych: 0, gości: 1