C program összeállításakor a fordító objektumkódot generál. Az objektumkód generálása után a fordító a linkert is meghívja. A linker egyik fő feladata a könyvtári funkciók kódja (pl. printf(), scanf(), sqrt(), ..stb) elérhető a program. A linker ezt a feladatot kétféleképpen tudja elvégezni: a könyvtári funkció kódját átmásolja az objektumkódra, vagy bizonyos intézkedéseket tesz annak érdekében, hogy a könyvtári funkciók teljes kódját ne másolják, hanem futásidőben elérhetővé tegyék.,
statikus Összekapcsolás és statikus könyvtárak az eredménye, hogy a linker másolatot készít az összes használt könyvtári funkcióról a futtatható fájlra. A statikus összekapcsolás nagyobb bináris fájlokat hoz létre, és több helyre van szüksége a lemezen és a fő memóriában. Példák statikus könyvtárak (könyvtárak, amelyek statikusan kapcsolódik),.a fájlok Linux és .lib fájlok A Windows rendszerben.
A statikus könyvtár létrehozásának lépései hozzunk létre és használjunk statikus könyvtárat UNIX-ban vagy UNIX-ban, mint például az operációs rendszer.
1. Hozzon létre egy C fájlt, amely funkciókat tartalmaz a könyvtárban.,div>
#include <stdio.h>
void
fun(
void
)
{
printf
(
"fun() called from a static library"
);
}
We have created only one file for simplicity., Több fájlt is létrehozhatunk a könyvtárban.
2. Hozzon létre egy fejléc fájlt a könyvtár
void
fun(
void
);
3. Fordítsd könyvtár fájlokat.
gcc -c lib_mylib.c -o lib_mylib.o
4. Statikus könyvtár létrehozása., Ez a lépés több objektumfájl csomagolása egy statikus könyvtárba (lásd az ar-t a részletekért). Ennek a lépésnek a kimenete statikus könyvtár.
ar rcs lib_mylib.a lib_mylib.o
5. Most a statikus könyvtár készen áll a használatra. Ezen a ponton mi is csak másolni lib_mylib.egy valahol máshol használni. Demo célokra tartsuk a könyvtárat az aktuális könyvtárban.
hozzunk létre egy illesztőprogram programot, amely a fent létrehozott statikus könyvtárat használja.
1., Hozzon létre egy C fájl, a fő funkció
#include "lib_mylib.h"
void
main()
{
fun();
}
2., Állítsa össze az illesztőprogram programot.
gcc -c driver.c -o driver.o
3. Csatlakoztassa az összeállított illesztőprogram programot a statikus könyvtárhoz. Vegye figyelembe, hogy-L. azt jelzi, hogy a statikus könyvtár az aktuális mappában van(lásd ezt a-L és-l opciókkal).
gcc -o driver driver.o -L. -l_mylib
4. Futtassa a driver programot
./driver fun() called from a static library
Az alábbiakban néhány fontos pont található a statikus könyvtárakról.
1. Statikus könyvtár esetén a tényleges kódot a linker kivonja a könyvtárból, majd a végleges végrehajtható fájlt az alkalmazás fordítási/buildelési pontján építi fel.,
2. Minden folyamat saját másolatot kap a kódról és az adatokról. Ahol, mint a dinamikus könyvtárak esetében, ez csak a megosztott kód, az adatok minden folyamatra jellemzőek. A statikus könyvtárak memória lábnyomok nagyobbak. Például, ha az összes ablakrendszer-eszközt statikusan összekapcsolnák, több tíz megabájt RAM-ot pazarolnának el egy tipikus felhasználó számára, a felhasználót pedig sok lapozás lelassítaná.
3. Mivel a könyvtár kódja a fordításkor van csatlakoztatva, a végleges végrehajtható fájlnak nincs függősége a könyvtárra futási időben, azaz., Nincs további futási idő betöltési költségek, ez azt jelenti, hogy nem kell, hogy készítsen végig egy példányt a könyvtár, hogy használják, és mindent az Ön irányítása alatt, nincs függőség.
4. A statikus könyvtárak, ha minden a csomagban az alkalmazás, akkor nem kell aggódnia, hogy az ügyfél lesz a megfelelő könyvtár (verzió) elérhető a rendszer.
5. A statikus könyvtárak egyik hátránya, hogy a statikus könyvtárakban bekövetkező bármilyen változás (up-gradáció) esetén minden alkalommal újra kell fordítania a fő programot.
6., A statikus könyvtárak egyik fő előnye, hogy még most is előnyben részesítik a sebességet. Nem lesz dinamikus lekérdezése szimbólumok statikus könyvtárak. Sok gyártósor szoftver statikus könyvtárakat használ még ma is.
Dynamic linking and Dinamikus Könyvtárak Dinamikus Összekapcsolása nem szükséges a kód, hogy másolt, ez történik, csak helyezve neve, a könyvtárban, a bináris fájl. A tényleges összekapcsolás akkor történik, amikor a program fut, amikor mind a bináris fájl, mind a könyvtár memóriában van. Példák a dinamikus könyvtárak (könyvtárak, amelyek kapcsolódnak a futási idő),. tehát a Linux és.dll az ablakokban.,
hamarosan több pontot fogunk lefedni a dinamikus könyvtárakról és azok létrehozásának lépéseiről.
Ez a cikk által összeállított Abhijit Saha és felül GeeksforGeeks csapat. Kérjük, írjon megjegyzéseket, ha talál valami helytelen, vagy szeretne megosztani több információt a témáról a fent tárgyalt.
figyelem olvasó! Ne hagyja abba a tanulást. Szerezd meg az összes fontos CS elmélet fogalmak Sde interjúk a CS Theory Course egy diák-barát áron lesz ipar kész.