Linker to komponent kompilatora używany do łączenia kilku plików kodu wynikowego z różnych źródeł w jeden plik wykonywalny. Jego głównym celem jest rozwiązywanie odniesień pomiędzy plikami (rozwiązywanie symboli) i przeprowadzanie relokacji segmentów pamięci, tak aby wszystkie dane w programie zostały poprawnie ze sobą powiązane.
Linkery są używane na wielu platformach, ale są szczególnie rozpowszechnione w kontekście komputerów osobistych (PC). Są one często używane w procesie tworzenia aplikacji i służą do organizowania dużej ilości kodu w mniejszym, bardziej kompaktowym pliku.
Linkery są zwykle częścią pakietu kompilatora i można ich również używać do łączenia bibliotek, zarówno ze środowiska programistycznego (łączenie statyczne), jak i być może z innych bibliotek (łączenie dynamiczne).
Główne etapy edycji linku to:
1. Wyszukiwanie bibliotek – Przeszukiwanie listy bibliotek w celu znalezienia potrzebnego kodu.
2. Rozwiązywanie symboli – Rozwiązywanie odniesień pomiędzy obiektami i ich implementacja.
3. Łączenie kodu obiektowego – Łączenie programów obiektowych w jeden program wykonywalny.
4. Relokacja adresów – Korekta odniesień w kodzie, w przypadku, gdy załadowane segmenty nie znajdują się pod tymi samymi adresami pamięci, jakie wskazano w kodzie.
5. Informacje o debugowaniu – generowanie informacji o debugowaniu w celu ułatwienia debugowania.
Linkery mogą również wykonywać zadania, takie jak uruchamianie dodatkowych skryptów w celu przeprowadzenia dodatkowej konfiguracji, dodawanie kontroli bezpieczeństwa do aplikacji i zapewnianie kompatybilności z innymi platformami.
Wirusy komputerowe zostały również stworzone w celu złośliwego wykorzystania, w szczególności w celu infekowania i łączenia złośliwego kodu z istniejącymi programami. Dlatego jednym z najważniejszych zadań linkera jest zapewnienie bezpieczeństwa połączonego programu.