بامثلا وقتی ما یه برنامه نوشتیم که از یک سری کتابخانه استفاده کرده. ما اون رو درون برنامه اینکلود کردیم و برنامه رو کامپایل کردیم. مگه اون سورسهای کتابخانه هم به زبان ماشین تبدیل نمیشن؟ پس چرا باز نیاز هست اون کتابخانه ها تو سیستم نصب و وجود داشته باشن؟
به دو صورت میشه برنامهها رو با کتابخانهها لینک کرد. بصورت Static که در این حالت اون کتابخانهها هم در برنامه قرار میگیرند و به صورت Dynamic که کتابخانه خارج از برنامه قرار میگیره.
حالا چرا همه برنامهها به صورت Static لینک نمیشن؟ چند دلیل داره.
۱) حجم اونها خیلی بالا میره.
۲) مصرف حافظه اونها معمولا بیشتر میشه.
۳) با هر تغییری توی اون کتابخانهها باید برنامه شما هم از نو کامپایل بشه.
برای مثال فرض کنید که همه برنامههای سیستم شما Static لینک شده باشند، با یک تغییر کوچک توی glibc باید تقریبا همه برنامهها دوباره بارگیری (یا لینک) بشن.