[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