Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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

897 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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

×