[sanniolug] Re: Linking

  • From: Domenico De Felice <dfd@xxxxxxxx>
  • To: sanniolug@xxxxxxxxxxxxx
  • Date: Sat, 22 May 2004 15:26:53 +0200

Alle 11:02, venerdì 21 maggio 2004, Alfonso Martone ha scritto:
> Si', puoi creare un file binario - e' quello che si fa col kernel di
> Linux. Ricordo tempo fa di aver visto qualcosa come cio' che cerchi
> (usava gcc e ld per creare un eseguibile binario, ma non ricordo piu'
> dove l'ho letto); ho trovato un appunto in cui ne parlavo, ma non so
> piu' risalire alla fonte; comunque il Makefile era qualcosa come:
>
> cc -nostdlib -nostdinc -c csrc.c
> nasm -felf asmsrc.asm
> ld -oformat binary -Ttext 0x7c00 -oeseguibile.bin asmsrc.o csrc.o

Una piccola correzione se mi e` consentita. Prima di oformat ci vogliono due 
trattini altrimenti ld assume format come file di output e cerca binary come 
file sorgente.
Per quanto riguarda -Ttext 0x7c00, e` la locazione di memoria alla quale viene 
caricata il settore di boot da parte del BIOS. Ma dato che il bootloader e` 
gia` caricato, ed anche il kernel e` stato gia` caricato (dal bootloader), il 
kernel non iniziera` da questa locazione (comunque credo che quella opzione 
sia un offset relativo che specifica dove inizia il programma, magari per 
`saltare' una prima parte dedicata alle strutture dati). Quindi posso anche 
toglierla.

Risolto quindi il problema di come generare un file binario. Grazie mille ;-) 
Offrirti una birra e` un obbligo ;-)

Purtroppo pero` rimane ancora il problema di capire perche` ld non riesce a 
trovare la definizione del simbolo _entrypoint.

[...]
> Ue', mi sa che quando tiri fuori la prima release del tuo nuovissimo
> sistema opertivo mi dovrai una birretta =:-)
Come sopra. ;-)
Ma non prenderla troppo sul serio, come ho detto e` solo per passare un po` di 
tempo divertendomi.

-- 
Domenico De Felice

Air is water with holes in it


Other related posts: