[OSy] Odevzdani 3. zakladniho zadani

Tom� Martinec fyzmat at gmail.com
Mon Jan 19 10:47:39 CET 2009


Dobry den,

dekuji za popis.

>> Nechapu presne, v cem by zde mel byt problem. Pro knihovnu librt.a je
>> funkce main() klasicky externi symbol (deklarovany s klicovym symbolem
>> "extern"). Muze se tedy na nej klidne odkazovat (jako kdyby to byl
>> externi symbol v samostatne stojicim objektovem souboru) a jeho skutecna
>> adresa se doplni pri linkovani.

Myslim tedy, ze problem byl v tom, ze jsem se statickou knihovnu
snazil vytvorit primo linkerem.

S pozdravem
Tomas Martinec

Dne 19. leden 2009 11:25 Martin Decky <decky at dsrg.mff.cuni.cz> napsal(a):
>> Bylo potreba umistit vstupni bod userspace vlaken na konkretni
>> (virtualni) adresu. S timto jsme si poradili vytvorenim zvlastniho
>> zdrojoveho souboru obsahujici pouze funkci, ktera predstavovala tento
>> vstupni bod a nasledne se nam podarilo pomoci definice sekce v linker
>> scriptu umistit funkci na pevnou adresu.
>
> Ano, to je myslim standardni postup, na kterem nevidim nic spatneho.
> Ostatne podobne se na pevne adresy umistuji rutiny kernelu (v Kalistu).
>
>> Druhy problem, ktery jsme doposud neprorazili, je pouziti main funkce
>> v behove knihovne a prelozeni knihovny tak, aby nevyzadovala
>> implementaci main.
>
> Nechapu presne, v cem by zde mel byt problem. Pro knihovnu librt.a je
> funkce main() klasicky externi symbol (deklarovany s klicovym symbolem
> "extern"). Muze se tedy na nej klidne odkazovat (jako kdyby to byl
> externi symbol v samostatne stojicim objektovem souboru) a jeho skutecna
> adresa se doplni pri linkovani.
>
>> Jako diagnosticky prostredek se vyplati seznamit se s objdump pro
>> mips. Aplikuje se na .raw binarky, nikoliv na binarky prohnane pres
>> objcopy.
>
> Ano, utilita objdump je skutecne velmi sikovna.
>
>> Take tedy prosim o navod, jakym zpusobem docilit korektniho prekladu
>> librt.a. Miru podrobnosti bych rad nechal na vasem uvazeni.
>
> Jak jiz psal kolega Outly, staticka knihovna (pripona .a) neni vlastne
> nic jineho nez soubor jednotlivych objektovych souboru (pripona .o)
> zabaleny do jednoho archivu (pod pojmem archiv si muzete klidne
> predstavit neco jako ZIP).
>
> Pokud tedy chcete vytvorit statickou knihovnu, prelozite jednotlive
> objketove soubory, ktere do ni patri, a to v zasade uplne stejne, jako
> byste tyto objektove soubory chteli linkovat primo. Potom pouzijete
> utilitu "ar" na ulozeni techto objektovych souboru do archivu.
>
> Pokud chcete statickou knihovnu pouzit (tj. slinkovat s ni nejake dalsi
> objektove soubory), tak ji jednoduse uvedete na prikazove radce linkeru
> jako jeho vstup (pripadne muzete pouzit prepinac -l, za predpokladu, ze
> mate spravne nastaveny cesty atd.).
>
>
> M.D.
>
> _______________________________________________
> OSy mailing list
> OSy at dsrg.mff.cuni.cz
> https://dsrg.mff.cuni.cz/mailman/listinfo/osy
>




More information about the NSWI004 mailing list