Linux Biblioteci

Aproape toate programele Linux folosesc aceleași funcții standard, de exemplu, pentru accesarea fișierelor, afișarea imaginilor pe ecran, suport pentru Hit. etc. Ar fi inadecvat să scrieți toate aceste funcții direct în codul celui mai mare program - atunci fișierele de programe ar deveni gigantice. În schimb, majoritatea programelor Linux se referă la așa-numitele biblioteci partajate: atunci când programul se execută, bibliotecile necesare sunt încărcate automat. Care este avantajul? Dacă mai multe programe utilizează funcțiile aceleiași biblioteci, atunci această bibliotecă trebuie să fie descărcată o singură dată.







Bibliotecile joacă un rol cheie atunci când se determină ce programe pot fi difuzate pe calculator. Dacă lipsește o singură bibliotecă (sau este disponibilă doar versiunea veche), atunci este afișat un mesaj de eroare imediat după pornirea programului. Deci, în astfel de cazuri, nu rămâneți la mila soarta în intestinul Linux, în această secțiune voi oferi informații de bază despre biblioteci.

Legătura dinamică a programelor prin legături. Majoritatea programelor Linux accesează bibliotecile partajate atunci când lucrează. Acest lucru economisește spațiu pe disc (deoarece fișierele de programe binare sunt compacte) și mai puțin RAM este încărcat (deoarece același cod nu trebuie încărcat de mai multe ori). Notă pentru programatorii care lucrează cu Windows: bibliotecile partajate sunt comparabile cu DLL-urile biblioteci conectate dinamic.

Formate și versiuni ale bibliotecilor


De-a lungul istoriei Linux, bibliotecile au fost schimbate de mai multe ori, care au fost la fel de fundamentale, deoarece acestea sunt incompatibile între ele. Astfel de modificări includ, de exemplu, înlocuirea formatului a.out la ELF sau o bibliotecă de înlocuire libc versiunea 5 pe versiunea glibc 2.p, și acestea din urmă pot fi tratate și cum libc 6 (versiunea în prezent relevantă a glibc 2.10).

În ambele cazuri, înlocuirea bibliotecii a fost justificată din punct de vedere tehnic. Noile formate sau versiuni vă permit să gestionați mai ușor bibliotecile și funcțiile, să oferiți o compatibilitate mai completă a diferitelor platforme Linux (Intel, Sun-Sparc, DEC-Alpha) etc.

Cu toate acestea, la înlocuire, există probleme asociate cu faptul că programele compilate pot fi executate numai când sunt instalate bibliotecile necesare în sistem și sistemul le poate găsi. Dacă încercați să executați un program pentru glibc într-o distribuție veche, în care glibc nu este acceptat, veți primi un mesaj de eroare criptic, după cum urmează:

NOTĂ


Datorită faptului că în prezent există probleme cu suportul glibc, este de așteptat versiunea viitoare a Debian Squeeze pentru a fi utilizate nu originală bibliotecă glibc și eglibc bibliotecă pe deplin compatibile.

Încărcare bibliotecă automată


Dacă lucrați cu Linux numai ca utilizator, și nu ca programator, atunci veți rula în biblioteci doar atunci când una dintre ele lipsește. În mod tipic, aceste probleme apar dacă instalați treptat un nou program. Când încercați să o porniți, primiți un mesaj de eroare care indică faptul că nu există o bibliotecă specifică. Adesea, versiunile curente ale programelor se referă la cele mai recente versiuni ale bibliotecilor corespunzătoare, pe care probabil că nu le aveți încă. Cu programele vechi, este posibil contrariul. Poate că se referă în continuare la bibliotecile învechite care nu mai sunt suportate în distribuția dvs.

Definirea unei liste de biblioteci


Comanda ldd este trecută ca parametru, care este adăugat la numele complet al programului. Ca răspuns, ldd listează toate bibliotecile care sunt necesare pentru a rula programul. În plus, specificați unde este localizată biblioteca corespunzătoare și care biblioteci sunt disponibile numai în versiunea depreciată.


În ceea ce privește programele X, KDE și Gnome, lista de biblioteci este mult mai extinsă aici. Din acest motiv, aceste programe funcționează destul de mult.







Numele bibliotecilor

Informații succinte despre numele bibliotecilor: sfârșitul .so indică faptul că avem de-a face cu o bibliotecă partajată, sfârșitul .a definește o bibliotecă statică. Următoarea cifră indică numărul versiunii principale. De exemplu, ls necesită biblioteca libc versiunea 6.

Cataloage, care sunt situate, de obicei, de bibliotecă (de exemplu, / lib, / usr / lib, / usr / local / lib, / usr / XHR6 / lib și / opt / lib), conțin adesea link-uri care se conectează versiunea de bază a bibliotecii cu care instalat pe computer. Deci, pentru cp (vezi mai sus), este necesară biblioteca ld-linux-x68-64.so.2. Dar, de fapt, versiunea computerului este ld-2.9.so, compatibilă "de jos în sus".

Programe de alergare

Când porniți programele, trebuie să găsiți și să încărcați toate bibliotecile - pentru că acesta este așa-zisul linker de runtime. Aceasta ține cont de toate directoarele specificate în variabila de mediu LD LIBRARY PATH. Aceste directoare sunt separate de colonii.

În plus, linkerul interpretează fișierul /etc/ld.so.cache. Acesta este un fișier binar care conține toate informațiile importante despre bibliotecă (numere de versiune, căi de acces, etc.). Este necesar doar pentru a economisi timp, pe care altfel l-ar petrece în legătură cu căutarea bibliotecilor.

/etc/ld.so.cache este creat de programul ldconfig, care, la rândul său, interpretează /etc/ld.so.conf. Acest fișier conține de obicei o listă a tuturor cataloage de bibliotecă sau o listă de link-uri către alte fișiere cu directoare (directoare / lib și / usr / lib sunt luate în considerare în orice caz și, prin urmare, lipsit de fișiere ld.so.conf sau de altă configurație. În cazul în care, altele decât / lib și / usr / lib nu va trebui să ia în considerare orice directoare, ld.so.conf poate fi, în general, omise).

În unele distribuții, comanda ldconfig rulează de fiecare dată când calculatorul este pornit pentru a se asigura că fișierul cache este cât mai actualizat posibil. Trebuie întotdeauna să se facă atunci când instalați manual o nouă bibliotecă, altfel sistemul nu va "vedea" bibliotecile. Dacă bibliotecile se află într-un director nou, trebuie să adăugați fișierul / etc / ld.so.conf în mod corespunzător. La instalarea pachetelor cu biblioteci, aceste sarcini sunt de obicei efectuate de managerul de pachete.

32- și 64-biți biblioteci

Cele mai comune distribuții există în prezent în cel puțin două versiuni de asamblare: procesoare pe 32 de biți compatibile cu Intel / AMD și procesoare pe 64 de biți compatibile cu Intel / AMD. Desigur, pentru procesoare pe 32 de biți sunt furnizate numai biblioteci pe 32 de biți. Cu toate acestea, din păcate, același lucru nu se poate spune despre distribuțiile pe 64 de biți: au existat și sunt încă programe care nu sunt compilate pentru sistemele pe 64 de biți. Cel mai cunoscut program de acest gen este Adobe Acrobat Reader.

Pentru a rula programe pe 32 de biți în distribuții pe 64 de biți, veți avea nevoie de biblioteci pe 32 de biți. Pentru a evita conflictele, bibliotecile sunt instalate în diferite directoare. Printre profesioniștii din Linux, această metodă se numește arhitectură multi-arhitectură sau bi-arhitectură, deoarece mai multe (sau două) arhitecturi de procesoare sunt suportate în paralel. În cele mai multe distribuții există directoare / lib32 sau / IL64, care permit să nu se amestece bibliotecile cu adâncime de biți diferite. Această dualitate, desigur, este asociată cu anumite dezavantaje: atunci când se instalează mai multe biblioteci în două copii, se cheltuie mai mult spațiu pe disc, în plus, suportul tehnic devine mai dificil.

Prelinking

Când executați un program care accesează biblioteci dinamice, trebuie să stabiliți o conexiune între program și biblioteci. Acest proces se numește obligatoriu. Când lucrați cu programe complexe de legare, mult timp pierdeți.

În viitor, fiecare program pregătit în acest mod va avea acces la bibliotecile sale mult mai rapid și, prin urmare, mai rapid. Această accelerare este remarcabilă în programele OpenOffice sau în programele KDE, care vor lua acum jumătate din timp pentru a porni. În ambele cazuri, datele prealabile trebuie să fie actualizate de fiecare dată când biblioteca este actualizată.

Pre-legarea are un alt dezavantaj - această operațiune schimbă fișierele executabile ale tuturor programelor și bibliotecilor. În plus, nu veți mai putea monitoriza integritatea unor astfel de fișiere (adică nu puteți verifica dacă fișierele rămân aceleași după instalare). În orice moment, puteți anula orice modificări efectuate în timpul pre-legării folosind comanda prelink -ua.

Debian, Ubuntu. Pentru a utiliza legarea prealabilă, trebuie să instalați pachetul prelink și să setați setarea PRELINKING = yes în fișierul / etc / default / prelink. Pre-legarea va fi efectuată zilnic ca una dintre sarcinile Cron.

Red Hat, Fedora. Funcția de pre-obligatorie este setată implicit. Datele sunt actualizate periodic (sarcina Cron /etc/cron.daily/prelink, fișierul de configurare / etc / sysconfig / prelink).

SUSE. Pentru a utiliza pre-legarea, trebuie să instalați pachetul prelink și să specificați setarea PRELINKING = yes în fișierul / etc / sys-config / prelink. Apoi, prelinkul va fi executat de modulul YaST după instalarea oricărui nou program sau a unei biblioteci (script /sbin/conf.d/SuSEconfig.pinlink).
Citiți același lucru:
Cum să compilați programele pe cont propriu

Servicii de dezvoltare de site-uri pe MODX

MODX este software-ul pe care îl folosim pentru a dezvolta toate site-urile noastre.

MODX vă va permite să aibă control complet asupra continutului utilizat pe site-ul dvs., puteți adăuga, șterge, modifica, și să modifice orice conținut pe care doriți, puteți gestiona pe deplin site-ul dumneavoastră.

Dezvoltarea profesionala a site-urilor pe MODX, dezvoltarea si sustinerea site-urilor. crearea și finalizarea magazinelor online pe MODX.







Articole similare

Trimiteți-le prietenilor: