Co to jest linker?
Linker, nazywany też konsolidatorem, to narzędzie używane podczas budowania programu. Jego zadaniem jest połączenie wcześniej skompilowanych części programu oraz potrzebnych bibliotek w jedną całość, najczęściej w plik wykonywalny.
Co robi linker?
Linker nie interpretuje kodu źródłowego i nie wykonuje programu linia po linii. Działa zwykle po etapie kompilacji, gdy kod źródłowy został już przekształcony do postaci kodu obiektowego.
Do zadań linkera należy między innymi:
- łączenie plików obiektowych, np.
main.oiutils.o, - dołączanie funkcji z bibliotek,
- rozwiązywanie odwołań do funkcji i zmiennych zdefiniowanych w innych plikach,
- przygotowanie końcowego pliku wykonywalnego lub biblioteki.
Przykład sytuacji
Jeśli program w C++ korzysta z funkcji zapisanej w innym pliku, kompilator może poprawnie przetworzyć każdy plik osobno. Dopiero linker łączy te pliki tak, aby wywołanie funkcji prowadziło do właściwego miejsca w programie.
Linker a interpreter
To ważne rozróżnienie egzaminacyjne:
- interpreter wykonuje kod w trakcie działania programu,
- kompilator tłumaczy kod źródłowy przed uruchomieniem,
- linker łączy skompilowane części programu i biblioteki.
Dlatego odpowiedź mówiąca o łączeniu kodu z bibliotekami nie opisuje interpretera, lecz właśnie linker.