Co to są linkery i jak działają?
Linkery to rodzaj oprogramowania, które łączy pliki obiektowe i biblioteki w celu utworzenia pliku wykonywalnego. Są wykorzystywane przy opracowywaniu systemów operacyjnych, aplikacji i innego oprogramowania. Linkery przyjmują pliki obiektowe wygenerowane przez kompilatory i biblioteki jako dane wejściowe i generują plik wykonywalny jako dane wyjściowe.
Linkery pełnią kilka funkcji, w tym:
1. Rozwiązywanie odniesień symbolicznych: Gdy program jest napisany w języku wysokiego poziomu, może zawierać odniesienia symboliczne do funkcji lub zmiennych, które nie są zdefiniowane w bieżącym kodzie źródłowym. Linker rozwiązuje te odniesienia, znajdując definicje funkcji lub zmiennych w innych plikach obiektowych lub bibliotekach.
2. Przenoszenie kodu i danych: Gdy kompilator generuje pliki obiektowe, mogą one zawierać kod i dane zależne od lokalizacji pliku obiektowego. Linker przenosi ten kod i dane do właściwej lokalizacji w pliku wykonywalnym.
3. Usuwanie niepotrzebnego kodu i danych: Linker może usunąć z końcowego pliku wykonywalnego kod i dane, które nie są potrzebne, zmniejszając jego rozmiar i poprawiając jego wydajność.
4. Tworzenie pliku wykonywalnego: Linker pobiera pliki obiektowe i biblioteki jako dane wejściowe i generuje plik wykonywalny, który można uruchomić na maszynie docelowej.
Dostępnych jest kilka typów linkerów, w tym:
1. Linkery dynamiczne: te konsolidatory tworzą plik wykonywalny zawierający odniesienie do bibliotek i innych plików obiektowych, od których jest zależny. Kiedy program jest uruchamiany, dynamiczny linker ładuje te zależności i rozwiązuje wszelkie odniesienia symboliczne w czasie wykonywania.
2. Linkery statyczne: te linkery tworzą plik wykonywalny zawierający wszystkie osadzone w nim zależności. Oznacza to, że program będzie można uruchomić bez żadnych dodatkowych zależności, ale oznacza to też, że rozmiar pliku wykonywalnego będzie większy.
3. Udostępnione konsolidatory: te konsolidatory tworzą plik wykonywalny zawierający biblioteki współdzielone, które są zbiorami kodu i danych, z których może korzystać wiele programów. Kiedy program jest powiązany z biblioteką współdzieloną, w końcowym pliku wykonywalnym zawarte są tylko określone funkcje i zmienne, które są potrzebne.
Podsumowując, linkery są istotną częścią procesu tworzenia oprogramowania, ponieważ pobierają pliki obiektowe wygenerowane przez kompilatory i bibliotek oraz utwórz plik wykonywalny, który można uruchomić na komputerze docelowym. Wykonują kilka funkcji, w tym rozwiązywanie odniesień symbolicznych, przenoszenie kodu i danych, usuwanie niepotrzebnego kodu i danych oraz tworzenie pliku wykonywalnego. Dostępnych jest kilka typów linkerów, w tym dynamiczne, statyczne i współdzielone linkery.