Diferența dintre o bibliotecă statică

Codul sursă ca regulă (dar depinde de cod și chiar de limbă) ocupă mai multe locuri decât cele obiect. Și pentru a le converti în cod obiect (traducere) este nevoie de timp. De aceea, cu mult timp în urmă (probabil în anii '50) și a venit cu o difuzare separată. Modulele de obiecte (și / sau bibliotecile) sunt stocate pe suporturi care trebuie conectate numai la programul dvs. în stadiul de asamblare (conectare). Deși din când în când apar anumite sisteme speciale. numiri (de exemplu pentru munca studentului), unde ambele. fișierele lipsesc (să spunem că viteza de traducere este ridicată, iar bibliotecile sunt mici). Dar aceasta este o raritate. - alexlz 24 ianuarie '12 la 11:03







Am o problemă majoră este clară și nu pot să vă pun o întrebare pe un subiect, ați spus că dacă scrieți o funcție într-un fișier antet, acesta va fi extern și este disponibil pentru toate modulele, și anume proiectul poate avea mai mult de un modul în caz afirmativ, în cazul în care acesta este utilizat și modul în care aceste module interacționează unul cu altul și dau un link unde puteți detalia despre programele compilate din mai multe module. - username76 Jan 24 '12 la 11:34 am







Este necesar să se organizeze programe de mari dimensiuni, astfel încât să nu împinge toate într-un singur fișier imens pe care iadul pe care le va găsi, și împărțit în mai multe module, în cazul în care funcțiile sau clase sunt combinate, de regulă, pe această temă (deși nu este cu siguranță necesar). Interacționați unul cu celălalt cu ajutorul funcțiilor și variabilelor externe, care în alte fișiere sunt declarate utilizând aceleași anteturi. În plus, dacă programul are mai multe module, programul este mare, atunci compilația generală poate dura mult timp. Dacă modificați o funcție, atunci nu este nevoie să recompilați totul, doar un singur modul. - skegg Jan 24 '12 la 11:40

@ Username76, așa cum sa spus aici despre modulele le-am avut în unități de compilare minte (sursă și obținute de la ei obiect (* .o) fișiere), din care linker (agent de legătură) face modulul de încărcare (* .exe în Windows). Este necesar să se distingă (aparent în context) care sunt modulele implicate. În general, în performanța modulelor în sensul unităților de compilare va funcționa în același spațiu de memorie, în timp ce modulele de încărcare în diferite (și invizibile între ei -. AVP 24 ianuarie '12 la 19:10

lib este un fișier binar, conține deja cod compilat. De aceea, de exemplu, bibliotecile standard nu sunt compilate din nou de fiecare dată când compilați unele saluturi. h este un fișier text, acesta declară funcții de la lib, dar nu există cod de funcții în ele. Conectarea fișierul .h, astfel încât compilatorul știe cum să se uite în .lib funcție: ce parametri pe care îi iau (și în ce ordine) și ce valori sunt returnate.

răspunsul dat 24 ianuarie '12 la 11:10







Articole similare

Trimiteți-le prietenilor: