انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: پیرامون dependency  (دفعات بازدید: 1075 بار)

0 کاربر و 2 مهمان درحال مشاهده موضوع.

آفلاین theMaster

  • Full Member
  • *
  • ارسال: 156
  • جنسیت : پسر
پیرامون dependency
« : 13 امرداد 1391، 02:14 ب‌ظ »
با سلام
مفاهیم مختصری در مورد وابستگی یا همون dependency رو می دونم ولی دقیق نمیدونم این یعنی چی؟چطور به وجود میاد.
مثلا وقتی ما یه برنامه نوشتیم که از یک سری کتابخانه استفاده کرده. ما اون رو درون برنامه اینکلود کردیم و برنامه رو کامپایل کردیم. مگه اون سورسهای کتابخانه هم به زبان ماشین تبدیل نمیشن؟ پس چرا باز نیاز هست اون کتابخانه ها تو سیستم نصب و وجود داشته باشن؟

آفلاین doomhammer65ir

  • High Hero Member
  • *
  • ارسال: 1572
  • جنسیت : پسر
    • IRAN Backup
پاسخ : پیرامون dependency
« پاسخ #1 : 13 امرداد 1391، 02:50 ب‌ظ »
هنگام کامپایل میتوانید آن کتابخانه را به برنامه پیوست کنید (‌static )‌
یا از کتابخانه های پویا بهره برید ( dynamic )
در روش نخست برنامه خود بسنده خواهد بود لاکن حجم بالاتر میرود و ..
در روش دوم حجم پایینتر است لاکن وابسته به کتابخانه های سامانه اصلی است و ..

آفلاین nixoeen

  • ناظر انجمن
  • *
  • ارسال: 4872
  • جنسیت : پسر
  • masoft قدیم
پاسخ : پیرامون dependency
« پاسخ #2 : 13 امرداد 1391، 02:55 ب‌ظ »
بامثلا وقتی ما یه برنامه نوشتیم که از یک سری کتابخانه استفاده کرده. ما اون رو درون برنامه اینکلود کردیم و برنامه رو کامپایل کردیم. مگه اون سورسهای کتابخانه هم به زبان ماشین تبدیل نمیشن؟ پس چرا باز نیاز هست اون کتابخانه ها تو سیستم نصب و وجود داشته باشن؟
به دو صورت میشه برنامه‌ها رو با کتابخانه‌ها لینک کرد. بصورت Static که در این حالت اون کتابخانه‌ها هم در برنامه قرار می‌گیرند و به صورت Dynamic که کتابخانه خارج از برنامه قرار میگیره.
حالا چرا همه برنامه‌ها به صورت Static لینک نمیشن؟ چند دلیل داره.
۱) حجم اونها خیلی بالا میره.
۲) مصرف حافظه اونها معمولا بیشتر میشه.
۳) با هر تغییری توی اون کتابخانه‌ها باید برنامه شما هم از نو کامپایل بشه.

برای مثال فرض کنید که همه برنامه‌های سیستم شما Static لینک شده باشند، با یک تغییر کوچک توی glibc باید تقریبا همه برنامه‌ها دوباره بارگیری (یا لینک) بشن.

آفلاین theMaster

  • Full Member
  • *
  • ارسال: 156
  • جنسیت : پسر
پاسخ : پیرامون dependency
« پاسخ #3 : 13 امرداد 1391، 02:58 ب‌ظ »
نقل‌قول
برای مثال فرض کنید که همه برنامه‌های سیستم شما Static لینک شده باشند، با یک تغییر کوچک توی glibc باید تقریبا همه برنامه‌ها دوباره بارگیری (یا لینک) بشن.

چون من برنامه ام رو استاتیک کامپایل کردم دیگر وابستگی به glibc ورژن جدید نخواهد داشت. درسته؟ در صورتی که نرم افزار من با نسخه های جدید glibc کار کنه مجبورم دوباره کامپیال کنم درسته؟

آفلاین nixoeen

  • ناظر انجمن
  • *
  • ارسال: 4872
  • جنسیت : پسر
  • masoft قدیم
پاسخ : پیرامون dependency
« پاسخ #4 : 14 امرداد 1391، 05:02 ق‌ظ »
چون من برنامه ام رو استاتیک کامپایل کردم دیگر وابستگی به glibc ورژن جدید نخواهد داشت. درسته؟ در صورتی که نرم افزار من با نسخه های جدید glibc کار کنه مجبورم دوباره کامپیال کنم درسته؟
ربطی به ورژن جدید یا قدیم نداره، دیگه نیاز به اون کتابخانه نخواهید داشت، چه قدیمی، چه جدید. بله، باید دوباره کامپایل بشه.