[OSy] Linkovani

Miloslav Beno beno at mbox.dkm.cz
Sun Dec 30 20:58:59 CET 2007


Zkusili jsme to prelozit do elf, ale linker funkci printk nenasel. Zkontrolovali jsme i nazvy a parametry,vse sedi. Pro jistotu prikladam vystup.

STARTUP(../libc/entry.o)
ENTRY(__entry)

SECTIONS {
        .uspace 0x00000000 : {
                *(.text)
                *(.data)
                *(.rodata .rodata.*)
                *(.bss)
                *(COMMON)
        }

        /DISCARD/ : {
                *(.reginfo)
        }
}

==================================================
attempt to open ../libc/entry.o succeeded
../libc/entry.o
attempt to open ../libc/libc.a succeeded
(../libc/libc.a)_main.o
attempt to open main.o succeeded
main.o
main.o: In function `main':
/afs/ms/u/b/benom4am/lammaos/apps/main.c:12: undefined reference to `printk'
make: *** [app.lamma] Error 1


-----Original Message-----
From: osy-bounces at dsrg.mff.cuni.cz [mailto:osy-bounces at dsrg.mff.cuni.cz] On Behalf Of Petr Tuma
Sent: Sunday, December 30, 2007 8:47 PM
To: Operating Systems Course
Subject: Re: [OSy] Linkovani

Dobry vecer,

tusim tu pred nejakou dobou pan Decky zminoval, ze kdyz se jako vystupni 
format pouziva rovnou binary, linker nehlasi unresolved symbols. Cituji:

"Jiny zadrhel (na ktery jsme tady uz upozornovali) by hypoteticky mohl
byt v tom, ze linker pro MIPS, pokud vytvari primo flat soubor (tj.
OUTPUT(binary)), tak si z nejakeho duvodu vubec nestezuje na chybejici
symboly. Je potreba nejdrive linkovat do ELF a ten teprve pomoci objcopy
zkonvertovat na binary."

Zkuste vystup do elf, jestli dostanete nejakou rozumnou hlasku ?

Petr Tuma


Miloslav Beno wrote:
> Dobry vecer,
> 
> Mame knihovnu libc.a, ve ktere jsou funkce _entry, _main,  printk, kazda ve
> svem object souboru.
> 
> V uzivatelskem programu pak je funkce main, ze ktere  se vola  printk.
> Problem je, ze linker pri sestavovani uzivatelskeho programu do binary
> formatu najde a prilinkuje funkce  (libc.a)_entry, (libc.a) _main,
> (main.o)main . ale uz neprilinkuje (libc.a)printk. GCC nenahlasi ani, ze
> funkce printk neni definovana a pri spusteni uzivatelsky program na tomto
> volani padne.
> 
> $(LD) --verbose -T ../libc/binary.lds -G 0 -static ../libc/libc.a
> $(OFILES_EXE) -o $@
> 
> 
> Binary.lds:
> 
> STARTUP(../libc/entry.o)
> OUTPUT_FORMAT(binary)
> OUTPUT_ARCH(mips)
> 
> SECTIONS {
> 	.uspace 0x00000000 : {
> 		*(.text)
> 		*(.data)
> 		*(.rodata .rodata.*)
> 		*(.bss)
> 		*(COMMON)
> 	}
> 	
> 	/DISCARD/ : {
> 		*(.reginfo)
> 	}
> }
> 
> 
> Predem dekujeme za reakce.
> 
> 
> _______________________________________________
> OSy mailing list
> OSy at dsrg.mff.cuni.cz
> https://dsrg.mff.cuni.cz/mailman/listinfo/osy

-- 
Petr Tuma
Distributed Systems Research Group
Department of Software Engineering
Faculty of Mathematics and Physics
Charles University, Czech Republic
   http://dsrg.mff.cuni.cz/~ceres

_______________________________________________
OSy mailing list
OSy at dsrg.mff.cuni.cz
https://dsrg.mff.cuni.cz/mailman/listinfo/osy





More information about the NSWI004 mailing list