> Daca programul tau e ceva special (eg. boot-loader, os-kernel) atunci poti
> sa folosesti ceva de genul:
> objcopy -O binary -j .text -j .data -j .rodata <program> <program_raw>
> Atentie, pentru asta trebuie sa-l compilezi static si sa ai de grija ca
> toate relocarile sa fie eliminate (cam greu de realizat).


Eu am facut ceva la stilul urmator, mai demult. In mod particular,
comanda de mai sus care extrage sectiunile relevante din ELF probabil
e mai buna decat la mine.

In loc de "ld -Ttext 0" poti sa pui ce adresa de start vrei tu.

O alta chestie cool de care probabil o sa ai nevoie e ca in fisierul
obiect pe care ti-l scoate ld-ul ai definite simbolurile:

__bss_start
_edata
_end
_etext


----

VERSION = 0
PATCHLEVEL = 1
SUBLEVEL = 1

SUBDIRS = init kernel lib drivers/char drivers/net drivers/pci fs mm tasks net
LIBDIR = -Llib -Ldrivers/char -Ldrivers/net \
         -Ldrivers/pci -Lfs -Lmm -Ltasks -Lnet
LIBS = -llib -lchar -lnetdriver -lpci -lfs -lmm -ltasks -lnet

CC= gcc -Wall -O2 -fomit-frame-pointer -fno-builtin
CPP= gcc -E
AS= as
AS86= as86 -0 -a
AS386= as86 -3
LD= ld
LD86= ld86 -0

CFLAGS  = -I../include

.EXPORT_ALL_VARIABLES:
        

KERNEL_OBJS = kernel/head.o kernel/main.o kernel/traps.o kernel/irq.o \
        kernel/timer.o kernel/fault.o kernel/sched.o 

all:
        @echo "Net386 v$(VERSION).$(PATCHLEVEL).$(SUBLEVEL) #`cat .compile`"
        @if [ ! -f .compile ]; then \
                echo 1 > .compile; \
        else \
                expr 0`cat .compile` + 1 > .compile; \
        fi

        @for i in $(SUBDIRS); do\
                (make -C $$i ) ;\
        done
        ld $(LIBDIR) -Ttext 0 $(KERNEL_OBJS) $(LIBS) -o init/kernel.tmp 
        objcopy -O binary -R .note -R .comment init/kernel.tmp init/kernel
        mv init/kernel.tmp init/net386obj

bdisk:
        cd init && make bdisk

clean:
        @for i in $(SUBDIRS); do \
                (make -C $$i $@ ) ; \
        done

newcompile:
        @echo 1 >.compile
---
Send e-mail to '[EMAIL PROTECTED]' with 'unsubscribe rlug' to 
unsubscribe from this list.

Raspunde prin e-mail lui