Шта су линкери и како функционишу?
Линкери су врста софтвера који повезује објектне датотеке и библиотеке да би креирао извршну датотеку. Користе се у развоју оперативних система, апликација и другог софтвера. Линкери узимају објектне датотеке које су генерисали компајлери и библиотеке као улаз и генеришу извршну датотеку као излаз.ӕӕЛинкери обављају неколико функција, укључујући:ӕӕ1. Решавање симболичких референци: Када је програм написан на језику високог нивоа, може да садржи симболичке референце на функције или променљиве које нису дефинисане у тренутном изворном коду. Линкер решава ове референце проналажењем дефиниција функција или променљивих у другим објектним датотекама или библиотекама.ӕ2. Премештање кода и података: Када објектне датотеке генерише компајлер, оне могу садржати код и податке који су релативни у односу на локацију објектне датотеке. Повезивач премешта овај код и податке на исправну локацију у извршној датотеци.ӕ3. Уклањање непотребног кода и података: Линкер може уклонити код и податке који нису потребни у коначној извршној датотеци, смањујући њену величину и побољшавајући перформансе.ӕ4. Креирање извршне датотеке: Линкер узима објектне датотеке и библиотеке као улаз и генерише извршну датотеку која се може покренути на циљној машини.ӕӕДоступно је неколико типова линкера, укључујући:ӕӕ1. Динамички линкери: Ови линкери креирају извршну датотеку која садржи референцу на библиотеке и друге објектне датотеке од којих зависи. Када се програм покрене, динамички линкер учитава ове зависности и решава све симболичке референце у току извршавања.ӕ2. Статички линкери: Ови линкери креирају извршну датотеку која садржи све зависности уграђене у њу. То значи да се програм може покренути без икаквих додатних зависности, али такође значи да ће величина извршне датотеке бити већа.ӕ3. Дељени линкери: Ови линкери креирају извршну датотеку која садржи дељене библиотеке, које су колекције кода и података које може да користи више програма. Када је програм повезан са дељеном библиотеком, само специфичне функције и варијабле које су потребне су укључене у коначну извршну датотеку.ӕӕУ резимеу, линкери су суштински део процеса развоја софтвера, јер узимају објектне датотеке које генерише компајлер и библиотеке и креирају извршну датотеку која се може покренути на циљној машини. Они обављају неколико функција, укључујући решавање симболичких референци, премештање кода и података, уклањање непотребног кода и података и креирање извршне датотеке. Доступно је неколико типова повезивача, укључујући динамичке, статичке и дељене линкере.