[sanniolug] Re: Linking

  • From: Alfonso Martone <a.martone@xxxxxxxxxxx>
  • To: sanniolug@xxxxxxxxxxxxx
  • Date: Fri, 21 May 2004 11:02:46 +0200

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 

Nota che il formato ELF viene usato solo per i file oggetto. Nota che 
non puoi usare librerie che abbisognerebbero della libc di Linux. 
Ricordati pure che devi smanettare parecchio se non sei gia' in 
"protected mode", e che le funzioni di libreria che ti servono devi con 
ogni probabilita' scrivertele da solo (percio' da cc ho tagliato fuori 
standard libraries e standard include files... poi, quel 0x7c00 e' 
l'indirizzo assoluto in RAM dove viene caricato il boot sector dal 
bios).

Ue', mi sa che quando tiri fuori la prima release del tuo nuovissimo 
sistema opertivo mi dovrai una birretta =:-)


Other related posts: