پیونددهنده
پیوندده برنامه‌ای کاربردی است که قطعه‌برنامه‌های (ترجمه (رایانه) شده) و پرونده‌های داده‌ای را برای ایجاد یک برنامه اجرایی با یکدیگر پیوند می‌دهد. این برنامه می‌تواند کارهای دیگری هم انجام دهد مثلاً ایجاد کتابخانه‌ها.
به این قطعات کوچک که ممکن است به تنهایی قابل اجرا نباشند، آبجکت‌فایل گفته می‌شود.
در سکوهای یونیکس پیوندده را اکثراً "Loader" می‌نامند. این نام‌گذاری برای قائل شدن تفاوتی بین زمان اجرا یا زمان کامپایل پروسه‌است. البته در بعضی سیستم‌عاملها این دو کار توسط یک برنامه انجام می‌شود. (لینک پویا)
برنامه‌های کامپیوتری معمولاً از چندین قطعه یا آبجکت‌فایل تشکیل می‌شوند؛ و معمولاً فایل واحدی به قطعات دیگر ارجاع می‌دهد.
لینکر همچنین می‌تواند از آبجکت‌فایلهای موجود در مجموعه‌ای واحد موسوم به "کتابخانه" استفاده کند.
معادل پیوندده از فرهنگ تشریحی کامپیوتر (داریوش فرسایی)، دانشیار ۱۳۷۹ خ است. در محاسبات، یک پیوند دهنده یا ویرایشگر پیوند یک برنامه سودمند رایانه ای است که یک یا چند فایل شیء تولید شده توسط یک گردآورنده را دریافت کرده و آنها را به یک فایل اجرایی تکی، فایل کتابخانه یا یک فایل «شی» دیگر تبدیل می‌کند.
یک نسخه ساده‌تر که خروجی خود را مستقیماً در حافظه ثبت می‌کند بارگذار نامیده می‌شود، هر چند بارگذاری به‌طور معمول به عنوان یک فرایند جداگانه در نظر گرفته می‌شود.
برنامه‌های کامپیوتری معمولاً شامل چند بخش یا پیمانه هستند؛ این قطعات / پیمانه‌ها نباید شامل یک پرونده شی تکی باشند، و در این چنین مواردی با استفاده از نمادها به عنوان نشانی به سایر پیمانه‌ها، که در هنگام پیوند برای اجرای، به آدرس‌های حافظه می‌رسند، به یکدیگر مراجعه می‌کنند. به‌طور معمول، یک فایل شیء می‌تواند شامل سه نوع نماد باشد:
برای اکثر گردآورنده‌ها، هر فایل شیئی نتیجه گردآوری یک فایل کد منبع ورودی است. هنگامی که یک برنامه از فایل‌های چند شیئی تشکیل شده‌است، پیوند دهنده این فایل‌ها را به یک برنامه قابل اجرای یکپارچه تبدیل می‌کند و نمادها را با هم ادغام می‌کند.
لینکرها می‌توانند اشیا را از مجموعه ای که "کتابخانه" یا کتابخانه زمان اجرا نامیده می‌شود بگیرند. اکثر پیوند دهنده‌ها کل کتابخانه در خروجی را شامل نمی‌شوند. آنها فقط شامل پرونده‌هایی هستند که توسط سایر پرونده‌ها یا کتابخانه‌ها اشاره شده‌است. اگرچه ممکن است پیوند کتابخانه یک فرایند تکراری باشد، با پیمانه‌هایی شامل نیاز به اتصال به پیمانه‌های اضافی و غیره. کتابخانه‌ها برای مقاصد مختلف وجود دارند و یک یا چند کتابخانه سیستم معمولاً به صورت پیش فرض پیوند داده شده‌اند.
پیوند دهنده همچنین وظیفه مرتب کردن اشیا در فضای نشانی برنامه را بر عهده دارد. این ممکن است شامل "نقل مکان کردن" کدی باشد که یک آدرس پایه خاص را به پایگاه دیگری متصل می‌کند. از آنجا که یک گردآورنده به ندرت می‌داند که یک شی در کجا قرار دارد، اغلب یک مکان پایه ثابت (به عنوان مثال صفر) را در نظر می‌گیرد. نقل مکان کردن کد ماشین ممکن است شامل دوباره هدف‌گیری جهش‌های مطلق، بارها و پایگاه‌ها باشد.
خروجی اجرایی توسط پیوند دهنده ممکن است نیاز به جواز نقل مکان دیگری را داشته باشد، وقتی که در نهایت روی حافظه (درست قبل از اجرای) بارگیری شده‌است. این گذر معمولاً در سخت‌افزار ارائه حافظه مجازی حذف می‌شود: هر برنامه در فضای آدرس خود قرار گرفته می‌شود، بنابراین حتی اگر همه برنامه‌ها در یک آدرس پایه یکسان بارگذاری شوند، هیچ تداخلی وجود ندارد. این پرونده همچنین ممکن است حذف شود در صورتی که اجرایی یک موقعیت مستقل باشد.
در برخی از متغیرهای یونیکس، مانند SINTRAN III، فرایند ارائه شده توسط یک پیوند دهنده (سرهم‌بندی فایل‌های شیء در یک برنامه) "بارگذاری گفته می‌شد" (مانند بارگذاری کد اجرایی بر روی یک فایل). علاوه بر این، در برخی از سیستم عامل‌ها، همان برنامه، هر دو عمل ارتباط و بارگذاری یک برنامه را مدیریت می‌کند (پیوند پویا).
بسیاری از محیط‌های سیستم عامل اجازه پیوند پویا را می‌دهند، تا زمانی که یک برنامه اجرا شود، قطعنامه‌های برخی از نمادهای نامشخص را به تعویق انداخته‌است. این به آن معناست که کد اجرایی هنوز حاوی نمادهای نامشخص می‌باشد، به علاوه یک لیست از اشیاء یا کتابخانه‌هایی که تعاریفی برای آنها ارائه خواهد داد. بارگذاری برنامه این اشیاء / کتابخانه‌ها را نیز بارگذاری می‌کند و پیوند نهایی را انجام می‌دهد.
این رویکرد دو مزیت دارد:
معایبی نیز وجود دارد:
پیوند ایستا نتیجه این عمل پیوند دهنده است که همه برنامه‌های کتابخانه مورد استفاده در برنامه را به تصویر اجرایی کپی می‌کند. این ممکن است نیاز به فضای دیسک و حافظه بیشتری نسبت به پیوند پویا داشته باشد، اما قابل حمل تر است، چرا که نیازی به حضور کتابخانه روی سیستم مورد نیازش و در جایی که اجرا می‌شود نیست. پیوند ایستا همچنین " DLL HELL " را از بین می‌برد، زیرا هر برنامه دقیقاً نسخه‌هایی از کتابخانه‌های مورد نیاز را فراهم می‌کند که تداخلی با برنامه‌های دیگر ندارند. یک برنامه که فقط چند روال از یک کتابخانه را استفاده می‌کند نیازی به نصب کل کتابخانه ندارد.
همان‌طور که گرداورنده هیچ اطلاعاتی در مورد طرح اشیاء در خروجی نهایی ندارد، نمی‌تواند از دستورالعمل‌های کوتاه‌تر یا کارآمدتری بهره ببرد که نیازمندی خاصی را جایگزین نشانی یک شی دیگر می‌کند. به عنوان مثال، دستورالعمل پرش می‌تواند یک آدرس مطلق یا یک جرقه از موقعیت فعلی را ارزیابی کند، و جبران ممکن است با طولهای متفاوت با توجه به فاصله تا هدف بیان شود. با ایجاد محافظانه کارنه‌ترین دستورالعمل‌ها (معمولاً بزرگترین نوع نسبی یا مطلق بسته به بستر) و اضافه کردن "نکات سست سازی"، ممکن است دستورالعملهای کوتاهتر یا کارآمدتری را در طول لینک نهایی جایگزین کنید. این مرحله تنها بعد از اینکه تمام اشیاء ورودی خوانده شد و آدرس موقت اختصاص داده شده انجام می‌شود؛ پیوند دهنده سست ساز پس از آن آدرس مجدد را اعلان می‌کند، که ممکن است به نوبه خود باعث سستی بیشتر شود. به‌طور کلی، توالی‌های جایگزین کوتاه‌تر هستند، که این اجازه می‌دهد این فرایند همواره بهترین راه حل با توجه به نظم ثابت اجسام همگام باشد. اگر این مورد نباشد، سستی می‌تواند تداخل ایجاد کند و پیوند دهنده باید مزایای هر دو گزینه را محاسبه کند.
در حالی که دستورالعمل سست سازی معمولاً در زمان پیوند اتفاق می‌افتد، سست سازی پیمانه درونی می‌تواند به عنوان بخشی از روند بهینه‌سازی در زمان گردآوری صورت گیرد. در برخی موارد، سست سازی نیز می‌تواند در زمان بارگذاری به عنوان بخشی از روند جابجایی یا همراه با تکنیک‌های حذف پویای کدهای مرده باشد.
در IBM System / 360 محیط های اصلی مانند OS / 360، از جملهz / OS برای رایانه‌های z / Architecture ، این نوع برنامه به عنوان یک "ویرایشگر پیوند" شناخته می‌شود. همان‌طور که از نام نشان می‌دهد یک "ویرایشگر" لینک دارای قابلیت اضافی اجازه دهی می‌باشد. علاوه بر این، جایگزینی و / یا حذف بخش‌های برنامه‌های فردی نیز از دیگر قابلیت‌های آن می‌باشد. سیستم‌های عامل مانند OS / 360 دارای فرمتی برای load-modulesهای اجرایی هستند که حاوی اطلاعات تکمیلی در مورد جزء جزء یک برنامه هستند، به طوری که می‌توان یک بخش خاص و جداگانه برنامه را جایگزین کرد و سایر قسمت‌های برنامه به روز می‌شود تا آدرس‌ها و سایر مراجع قابل انتقال با استفاده از ویرایشگر پیوند به عنوان بخشی از روند، اصلاح می‌شود.
یک مزیت این امر ان است که اجازه می‌دهد یک برنامه بدون نیاز به نگه داشتن تمامی پرونده‌های شیء میانجی یا بدون نیاز به گردآوری دوباره بخش‌هایی از برنامه که تغییر نکرده باشند نگهداری شود. همچنین اجازه می‌دهد به روز رسانی برنامه‌ها در قالب فایل‌های کوچک توزیع شود (در اصل عرشه کارت‌ها)، که تنها شامل پیمانه شی که باید جایگزین شود می‌باشد. در چنین سیستمی، کد شیء در شکل و فرمت ۸۰ بایت تصاویر کارت پانچ قرار دارد، به طوری که به روزرسانی‌ها می‌توانند در یک سیستم با استفاده از آن رسانه معرفی شوند. در نسخه‌های بعدی OS / 360 و در سیستم‌های بعدی، بار-پیمانه‌ها شامل اطلاعات اضافی در مورد نسخه‌های پیمانه‌های اجزای سازنده، برای ایجاد یک مدرک قابل پیگیری از به روز رسانی است.
اصطلاح «ویرایشگر پیوند» نباید به معنای این باشد که برنامه در یک حالت تعاملی کاربر مانند یک ویرایشگر متن عمل می‌کند. این برنامه برای اجرای بیتی در نظر گرفته شده‌است؛ دستورات ویرایش توسط کاربر در فایل‌های متوالی سازماندهی شده مانند کارت‌های پانچ، DASD یا نوار مغناطیسی عرضه می‌شود و نوارها اغلب در هنگام نصب اولیه سیستم عامل استفاده می‌شوند.