Mik azok a linkerek és hogyan működnek?
A linkerek olyan szoftvertípusok, amelyek összekapcsolják az objektumfájlokat és a könyvtárakat, hogy végrehajtható fájlt hozzanak létre. Operációs rendszerek, alkalmazások és egyéb szoftverek fejlesztésére használják. A linkerek a fordítók és a könyvtárak által generált objektumfájlokat veszik be bemenetként, és egy végrehajtható fájlt generálnak kimenetként.
A linkerek számos funkciót látnak el, többek között:
1. Szimbolikus hivatkozások feloldása: Ha egy programot magas szintű nyelven írnak, akkor szimbolikus hivatkozásokat tartalmazhat olyan függvényekre vagy változókra, amelyek nincsenek definiálva az aktuális forráskódban. A linker úgy oldja fel ezeket a hivatkozásokat, hogy megkeresi a függvények vagy változók definícióit más objektumfájlokban vagy könyvtárakban.
2. Kód és adatok áthelyezése: Amikor a fordító létrehozza az objektumfájlokat, azok az objektumfájl helyéhez viszonyított kódot és adatokat tartalmazhatnak. A linker áthelyezi ezt a kódot és az adatokat a megfelelő helyre a végrehajtható fájlban.
3. Felesleges kód és adatok eltávolítása: A linker eltávolíthatja a nem szükséges kódokat és adatokat a végső végrehajtható fájlban, csökkentve a méretét és javítva a teljesítményét.
4. Futtatható fájl létrehozása: A linker bemenetként veszi az objektumfájlokat és a könyvtárakat, és létrehoz egy végrehajtható fájlt, amely futtatható a célgépen.
Többféle linker elérhető, többek között:
1. Dinamikus linkerek: Ezek a linkerek egy végrehajtható fájlt hoznak létre, amely hivatkozást tartalmaz a könyvtárakra és más objektumfájlokra, amelyektől függ. A program futtatásakor a dinamikus linker betölti ezeket a függőségeket, és futás közben felold minden szimbolikus hivatkozást.
2. Statikus linkerek: Ezek a linkerek egy végrehajtható fájlt hoznak létre, amely tartalmazza az összes beágyazott függőséget. Ez azt jelenti, hogy a program minden további függőség nélkül futtatható, de azt is jelenti, hogy a futtatható fájl mérete nagyobb lesz.
3. Megosztott linkerek: Ezek a linkerek egy végrehajtható fájlt hoznak létre, amely megosztott könyvtárakat tartalmaz, amelyek kód- és adatgyűjtemények, amelyeket több program is használhat. Amikor egy program egy megosztott könyvtárhoz kapcsolódik, csak a szükséges speciális függvények és változók kerülnek bele a végső végrehajtható fájlba.
Összefoglalva, a linkerek a szoftverfejlesztési folyamat lényeges részét képezik, mivel a fordítók által generált objektumfájlokat veszik át. és könyvtárakat, és hozzon létre egy végrehajtható fájlt, amely futtatható a célgépen. Számos funkciót látnak el, beleértve a szimbolikus hivatkozások feloldását, a kód és az adatok áthelyezését, a szükségtelen kód és adatok eltávolítását, valamint egy végrehajtható fájl létrehozását. Számos típusú linker áll rendelkezésre, beleértve a dinamikus, statikus és megosztott linkereket.