Biblioteci             Programatic                 Gestiunea bibliotecilor                        ˆ                       ...
Biblioteci              Programatic   Gestiunea bibliotecilor                        ˆ                                    ...
Biblioteci              Programatic     Gestiunea bibliotecilor                        ˆ                                  ...
Biblioteci               Programatic             Gestiunea bibliotecilor                        ˆ                         ...
Biblioteci               Programatic     Gestiunea bibliotecilor                        ˆ                                 ...
Biblioteci              Programatic             Gestiunea bibliotecilor                        ˆ                          ...
Biblioteci               Programatic            Gestiunea bibliotecilor                        ˆ                          ...
Biblioteci                 Programatic              Gestiunea bibliotecilor                        ˆ                      ...
Biblioteci                 Programatic                Gestiunea bibliotecilor                        ˆ                    ...
Biblioteci              Programatic            Gestiunea bibliotecilor                        ˆ                           ...
Biblioteci              Programatic   Gestiunea bibliotecilor                        ˆ                                    ...
Biblioteci                 Programatic               Gestiunea bibliotecilor                        ˆ                     ...
Biblioteci              Programatic            Gestiunea bibliotecilor                        ˆ                           ...
Biblioteci               Programatic             Gestiunea bibliotecilor                        ˆ                         ...
Biblioteci               Programatic             Gestiunea bibliotecilor                        ˆ                         ...
Biblioteci                 Programatic             Gestiunea bibliotecilor                        ˆ                       ...
Biblioteci                 Programatic         Gestiunea bibliotecilor                        ˆ                           ...
Biblioteci                 Programatic             Gestiunea bibliotecilor                        ˆ                       ...
Biblioteci              Programatic            Gestiunea bibliotecilor                        ˆ                           ...
Biblioteci              Programatic   Gestiunea bibliotecilor                        ˆ                                    ...
Biblioteci               Programatic             Gestiunea bibliotecilor                        ˆ                         ...
Biblioteci               Programatic            Gestiunea bibliotecilor                        ˆ                          ...
Biblioteci            Programatic   Gestiunea bibliotecilor                        ˆ                                      ...
Biblioteci              Programatic            Gestiunea bibliotecilor                        ˆ                           ...
Biblioteci              Programatic            Gestiunea bibliotecilor                        ˆ                           ...
Biblioteci              Programatic   Gestiunea bibliotecilor                        ˆ                                    ...
Biblioteci            Programatic      Gestiunea bibliotecilor                        ˆ                                   ...
Biblioteci                   Programatic   Gestiunea bibliotecilor                        ˆ                               ...
Upcoming SlideShare
Loading in...5
×

Răzvan Deaconescu - Biblioteci, gestiunea bibliotecilor

524

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
524
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Răzvan Deaconescu - Biblioteci, gestiunea bibliotecilor

  1. 1. Biblioteci Programatic Gestiunea bibliotecilor ˆ Intreb˘ri a Biblioteci. Gestiunea bibliotecilor R˘zvan Deaconescu a razvan@rosedu.org ˆ alnirile lunare RLUG – Iulie 2011 Intˆ 14 iulie 2011R˘zvan Deaconescu a ˆ alnirile lunare RLUG – Iulie 2011 IntˆBiblioteci
  2. 2. Biblioteci Programatic Gestiunea bibliotecilor ˆ Intreb˘ri aOutline 1 Biblioteci 2 Programatic 3 Gestiunea bibliotecilor 4 ˆ Intreb˘ri aR˘zvan Deaconescu a ˆ alnirile lunare RLUG – Iulie 2011 IntˆBiblioteci
  3. 3. Biblioteci Programatic Gestiunea bibliotecilor ˆ Intreb˘ri aFisiere obiect , fisiere binare , cod compilat si asamblat , format ELF, COFF, PER˘zvan Deaconescu a ˆ alnirile lunare RLUG – Iulie 2011 IntˆBiblioteci
  4. 4. Biblioteci Programatic Gestiunea bibliotecilor ˆ Intreb˘ri aBiblioteci colectie de fisiere obiect , , functionalit˘tile oferite de fisierele obiect sunt disponibile ˆ , a, , ın bibliotec˘ a link-area unei biblioteci pentru obtinerea unui executabil ,R˘zvan Deaconescu a ˆ alnirile lunare RLUG – Iulie 2011 IntˆBiblioteci
  5. 5. Biblioteci Programatic Gestiunea bibliotecilor ˆ Intreb˘ri aDe ce biblioteci? modularizare, reutilizare reinventing the wheelR˘zvan Deaconescu a ˆ alnirile lunare RLUG – Iulie 2011 IntˆBiblioteci
  6. 6. Biblioteci Programatic Gestiunea bibliotecilor ˆ Intreb˘ri aBiblioteci statice colectie “dumb” de fisiere obiect , , linkarea unei biblioteci statice ˆ ınseamn˘ ad˘ugarea de cod a a executabil se adaug˘ ˆ a ıntreg codul modulului obiect din care provine functia , ar rc libmylib.a a.o b.o c.oR˘zvan Deaconescu a ˆ alnirile lunare RLUG – Iulie 2011 IntˆBiblioteci
  7. 7. Biblioteci Programatic Gestiunea bibliotecilor ˆ Intreb˘ri aBiblioteci dinamice fisier cu format specializat ˆ care sunt colectate fisierele , ın , obiect detine informatii suplimentare despre obiecte, simboluri, , , functii , linkarea ˆ ınseamn˘ doar marcarea unor referinte c˘tre biblioc˘ a , a a ˆ arcarea codului din cadrul bibliotecii va fi realizat˘ ulterior ınc˘ a .so pe Unix, .dll pe Windows gcc -shared -o libmylib.so a.o b.o c.o fisierele obiect compilate cu -fPIC ,R˘zvan Deaconescu a ˆ alnirile lunare RLUG – Iulie 2011 IntˆBiblioteci
  8. 8. Biblioteci Programatic Gestiunea bibliotecilor ˆ Intreb˘ri aBiblioteci statice vs. dinamice statice cod portabil (independent de bibliotecile sistemului) nu exist˘ overhead la load-time sau run-time a dinamice dimensiune mic˘ a executabilului a eficient˘ ˆ folosirea memoriei – bibliotecile sunt “partajate” de , a ın mai multe proceseR˘zvan Deaconescu a ˆ alnirile lunare RLUG – Iulie 2011 IntˆBiblioteci
  9. 9. Biblioteci Programatic Gestiunea bibliotecilor ˆ Intreb˘ri aBiblioteci vs. headere bibliotecile sunt colectii de fisiere obiect , , headerele sunt fisiere cu extensia .h ce contin , , declaratii de functii , , macrodefinitii, definitii de structuri si tipuri de date , , un header este inclus de un fisier C sau alt fisier header , , o bibliotec˘ este linkat˘ la un executabil a a un header este scris de programator o bibliotec˘ este obtinut˘ prin “comasarea” fisierelor obiect a , a , header – preprocesare bibliotec˘ – linking aR˘zvan Deaconescu a ˆ alnirile lunare RLUG – Iulie 2011 IntˆBiblioteci
  10. 10. Biblioteci Programatic Gestiunea bibliotecilor ˆ Intreb˘ri aAnaliza unei biblioteci ldd – listarea dependentelor pentru bibliotei dinamice , nm – listarea simbolurilor readelf – citeste fisierele ELF , ,R˘zvan Deaconescu a ˆ alnirile lunare RLUG – Iulie 2011 IntˆBiblioteci
  11. 11. Biblioteci Programatic Gestiunea bibliotecilor ˆ Intreb˘ri aOutline 1 Biblioteci 2 Programatic 3 Gestiunea bibliotecilor 4 ˆ Intreb˘ri aR˘zvan Deaconescu a ˆ alnirile lunare RLUG – Iulie 2011 IntˆBiblioteci
  12. 12. Biblioteci Programatic Gestiunea bibliotecilor ˆ Intreb˘ri aLinker-ul rezolvarea simbolurilor si unirea modulelor obiect , un simbol: o variabil˘, un nume de functie a , la compilare, simbolurile folosite ˆ modul, dar nedefinite, sunt ın marcate special (undefined) rezolvare = descoperirea modulului ˆ care este definit ın simbolurile linker-ul este folosit pentru a obtine executabile si biblioteci , , dinamice LD FLAGS – flag-uri de linker -L. – la linkare sunt c˘utate bibliotecile si ˆ directorul curent a , ın LD LIBS – biblioteci linkate -ltorrentR˘zvan Deaconescu a ˆ alnirile lunare RLUG – Iulie 2011 IntˆBiblioteci
  13. 13. Biblioteci Programatic Gestiunea bibliotecilor ˆ Intreb˘ri aLoader-ul ˆ ıncarc˘ programul ˆ executie si ˆ a ın , , ıncepe rularea procesului load time = la executie , loaderul are cunostint˘ de formatul executabilului , ,a traduce zonele din fisierul executabil ˆ zone de memorie , ın apelat prin intermediul execve(2)R˘zvan Deaconescu a ˆ alnirile lunare RLUG – Iulie 2011 IntˆBiblioteci
  14. 14. Biblioteci Programatic Gestiunea bibliotecilor ˆ Intreb˘ri aStatic linking folosit la legarea modulelor obiect si a bibliotecilor statice , tot codul necesar este “colectat” ˆ executabil ın executabilul poate fi portat pe un sistem ce nu detine , bibliotecile folosite se poate folosi optiunea -static la gcc ,R˘zvan Deaconescu a ˆ alnirile lunare RLUG – Iulie 2011 IntˆBiblioteci
  15. 15. Biblioteci Programatic Gestiunea bibliotecilor ˆ Intreb˘ri aDynamic linking folosit la legarea bibliotecilor dinamice se adaug˘ putin cod ˆ executabil a , ın aducerea codului necesar ˆ memorie se realizeaz˘ mai tˆrziu ın a aR˘zvan Deaconescu a ˆ alnirile lunare RLUG – Iulie 2011 IntˆBiblioteci
  16. 16. Biblioteci Programatic Gestiunea bibliotecilor ˆ Intreb˘ri aLoad time dynamic linking codul necesar din cadrul bibliotecii este adus ˆ memorie la ın load time (lansarea ˆ executie) ın , se ocup˘ loaderul a loaderul trebuie s˘ stie unde s˘ caute a , a optiunea -L. este folosit˘ la link time nu la load time , a se lanseaz˘ procesul si se adaug˘ codul bibliotecii a , a dac˘ biblioteca exist˘ ˆ memorie (ˆ arcat˘ de alt proces), a a ın ınc˘ a atunci este referit˘ si partajat˘ a , aR˘zvan Deaconescu a ˆ alnirile lunare RLUG – Iulie 2011 IntˆBiblioteci
  17. 17. Biblioteci Programatic Gestiunea bibliotecilor ˆ Intreb˘ri aRun time dynamic linking codul este adus ˆ memorie la run time (ˆ momentul ˆ care ın ın ın procesul se execut˘) a similaritate cu malloc dezvoltatorul precizeaz˘ numele bibliotecii; c˘utarea se face a a similar ca la load time dynamic linking dlopen & friends LoadLibrary & friends De ce? plugins hooking (injection)R˘zvan Deaconescu a ˆ alnirile lunare RLUG – Iulie 2011 IntˆBiblioteci
  18. 18. Biblioteci Programatic Gestiunea bibliotecilor ˆ Intreb˘ri aLD PRELOAD nume de fisiere de tip bibliotec˘ ce sunt ˆ arcate ˆ , a ınc˘ ınaintea altora nu c˘i c˘tre directoare cu biblioteci (cum se ˆ ampl˘ la a a ıntˆ a LD LIBRARY PATH scenariu tipic – hooking se creeaz˘ un modul ce implementeaz˘ malloc a a se creeaz˘ o bibliotec˘ ce contine modulul a a , se foloseste LD PRELOAD , la un apel malloc se apeleaz˘ biblioteca proprie a folosind dlopen & friends se apeleaz˘ malloc din biblioteca a standard CR˘zvan Deaconescu a ˆ alnirile lunare RLUG – Iulie 2011 IntˆBiblioteci
  19. 19. Biblioteci Programatic Gestiunea bibliotecilor ˆ Intreb˘ri aLD DEBUG depanarea interactiunii cu biblioteca , export LD DEBUG=help export LD DEBUG=filesR˘zvan Deaconescu a ˆ alnirile lunare RLUG – Iulie 2011 IntˆBiblioteci
  20. 20. Biblioteci Programatic Gestiunea bibliotecilor ˆ Intreb˘ri aOutline 1 Biblioteci 2 Programatic 3 Gestiunea bibliotecilor 4 ˆ Intreb˘ri aR˘zvan Deaconescu a ˆ alnirile lunare RLUG – Iulie 2011 IntˆBiblioteci
  21. 21. Biblioteci Programatic Gestiunea bibliotecilor ˆ Intreb˘ri aBiblioteci statice se p˘streaz˘ ˆ directoare standard (/usr/lib, /lib) a a ın altfel, se precizeaz˘ la link time calea c˘tre bibliotec˘ a a a (LD FLAGS, -L.) nu este nevoie de un management specializatR˘zvan Deaconescu a ˆ alnirile lunare RLUG – Iulie 2011 IntˆBiblioteci
  22. 22. Biblioteci Programatic Gestiunea bibliotecilor ˆ Intreb˘ri aBiblioteci dinamice rezolvarea referintelor se face la link time, f˘r˘ a ˆ arca , a a ınc˘ buc˘ti de cod ˆ fisierul executabil a, ın , calea c˘tre biblioteci trebuie rezolvat˘ la load time (sau run a a time) trebuie configurat loader-ul, care nu este apelat explicit de utilizator (este apelat prin intermediul execve) man ld.soR˘zvan Deaconescu a ˆ alnirile lunare RLUG – Iulie 2011 IntˆBiblioteci
  23. 23. Biblioteci Programatic Gestiunea bibliotecilor ˆ Intreb˘ri aWhat is this? ld.so ld-linux.so /etc/ld.so.conf /etc/ld.so.conf.d/ /etc/ld.so.cache /etc/ld.so.preloadR˘zvan Deaconescu a ˆ alnirile lunare RLUG – Iulie 2011 IntˆBiblioteci
  24. 24. Biblioteci Programatic Gestiunea bibliotecilor ˆ Intreb˘ri aLD LIBRARY PATH precizeaz˘ c˘i suplimentare unde s˘ fie c˘utate bibliotecile a a a a dinamice similar cu PATH – separatie prin caracterul “dou˘ , a puncte”/“colon” (:) LD LIBRARY PATH=. ./execR˘zvan Deaconescu a ˆ alnirile lunare RLUG – Iulie 2011 IntˆBiblioteci
  25. 25. Biblioteci Programatic Gestiunea bibliotecilor ˆ Intreb˘ri aldconfig controleaz˘ cache-ul de de biblioteci dinamice a cache-ul este stocat ˆ fisierul /etc/ld.so.cache ın , loader-ul caut˘ bibliotecile urmˆnd un set de pasi dati (man a a , , ld.so) ˆ ınainte de a c˘uta ˆ directoarele implicite (/lib, /usr/lib), a ın va c˘uta ˆ cache – vitez˘ sporit˘ a ın a a ldconfig este apelat ˆ general la instalarea de aplicatii de ın , sistemul de gestiune a pachetelor (apt, yum) ldconfig -p ldconfig -n .R˘zvan Deaconescu a ˆ alnirile lunare RLUG – Iulie 2011 IntˆBiblioteci
  26. 26. Biblioteci Programatic Gestiunea bibliotecilor ˆ Intreb˘ri aOutline 1 Biblioteci 2 Programatic 3 Gestiunea bibliotecilor 4 ˆ Intreb˘ri aR˘zvan Deaconescu a ˆ alnirile lunare RLUG – Iulie 2011 IntˆBiblioteci
  27. 27. Biblioteci Programatic Gestiunea bibliotecilor ˆ Intreb˘ri aResurse utile http://www.dwheeler.com/program-library/ MSDNAA – Dynamic Link Libraries – http://msdn.microsoft.com/en-us/library/ ms682589(v=VS.85).aspxR˘zvan Deaconescu a ˆ alnirile lunare RLUG – Iulie 2011 IntˆBiblioteci
  28. 28. Biblioteci Programatic Gestiunea bibliotecilor ˆ Intreb˘ri aKeywords fisiere obiect , ld.so biblioteci run-time biblioteci statice load-time biblioteci dinamice LD PRELOAD -fPIC LD DEBUG header LD LIBRARY PATH linker /etc/ld.* loader ldconfigR˘zvan Deaconescu a ˆ alnirile lunare RLUG – Iulie 2011 IntˆBiblioteci
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×