[OSy] Linkovani

Petr Tuma petr.tuma at dsrg.mff.cuni.cz
Sun Dec 30 21:06:39 CET 2007


Dobry vecer,

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

Zkusil bych objdump -t na tu .a knihovnu a main.o, jestli jsou ty 
symboly v obou souborech opravdu stejne pojmenovane a na spravnem miste 
jako export a import ...

Petr Tuma


> 
> 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




More information about the NSWI004 mailing list