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

کمک و پشتیبانی => برنامه‌سازی => نویسنده: theMaster در 13 امرداد 1391، 02:14 ب‌ظ

عنوان: پیرامون dependency
ارسال شده توسط: theMaster در 13 امرداد 1391، 02:14 ب‌ظ
با سلام
مفاهیم مختصری در مورد وابستگی یا همون dependency رو می دونم ولی دقیق نمیدونم این یعنی چی؟چطور به وجود میاد.
مثلا وقتی ما یه برنامه نوشتیم که از یک سری کتابخانه استفاده کرده. ما اون رو درون برنامه اینکلود کردیم و برنامه رو کامپایل کردیم. مگه اون سورسهای کتابخانه هم به زبان ماشین تبدیل نمیشن؟ پس چرا باز نیاز هست اون کتابخانه ها تو سیستم نصب و وجود داشته باشن؟
عنوان: پاسخ : پیرامون dependency
ارسال شده توسط: doomhammer65ir در 13 امرداد 1391، 02:50 ب‌ظ
هنگام کامپایل میتوانید آن کتابخانه را به برنامه پیوست کنید (‌static )‌
یا از کتابخانه های پویا بهره برید ( dynamic )
در روش نخست برنامه خود بسنده خواهد بود لاکن حجم بالاتر میرود و ..
در روش دوم حجم پایینتر است لاکن وابسته به کتابخانه های سامانه اصلی است و ..
عنوان: پاسخ : پیرامون dependency
ارسال شده توسط: nixoeen در 13 امرداد 1391، 02:55 ب‌ظ
بامثلا وقتی ما یه برنامه نوشتیم که از یک سری کتابخانه استفاده کرده. ما اون رو درون برنامه اینکلود کردیم و برنامه رو کامپایل کردیم. مگه اون سورسهای کتابخانه هم به زبان ماشین تبدیل نمیشن؟ پس چرا باز نیاز هست اون کتابخانه ها تو سیستم نصب و وجود داشته باشن؟
به دو صورت میشه برنامه‌ها رو با کتابخانه‌ها لینک کرد. بصورت Static که در این حالت اون کتابخانه‌ها هم در برنامه قرار می‌گیرند و به صورت Dynamic که کتابخانه خارج از برنامه قرار میگیره.
حالا چرا همه برنامه‌ها به صورت Static لینک نمیشن؟ چند دلیل داره.
۱) حجم اونها خیلی بالا میره.
۲) مصرف حافظه اونها معمولا بیشتر میشه.
۳) با هر تغییری توی اون کتابخانه‌ها باید برنامه شما هم از نو کامپایل بشه.

برای مثال فرض کنید که همه برنامه‌های سیستم شما Static لینک شده باشند، با یک تغییر کوچک توی glibc باید تقریبا همه برنامه‌ها دوباره بارگیری (یا لینک) بشن.
عنوان: پاسخ : پیرامون dependency
ارسال شده توسط: theMaster در 13 امرداد 1391، 02:58 ب‌ظ
نقل‌قول
برای مثال فرض کنید که همه برنامه‌های سیستم شما Static لینک شده باشند، با یک تغییر کوچک توی glibc باید تقریبا همه برنامه‌ها دوباره بارگیری (یا لینک) بشن.

چون من برنامه ام رو استاتیک کامپایل کردم دیگر وابستگی به glibc ورژن جدید نخواهد داشت. درسته؟ در صورتی که نرم افزار من با نسخه های جدید glibc کار کنه مجبورم دوباره کامپیال کنم درسته؟
عنوان: پاسخ : پیرامون dependency
ارسال شده توسط: nixoeen در 14 امرداد 1391، 05:02 ق‌ظ
چون من برنامه ام رو استاتیک کامپایل کردم دیگر وابستگی به glibc ورژن جدید نخواهد داشت. درسته؟ در صورتی که نرم افزار من با نسخه های جدید glibc کار کنه مجبورم دوباره کامپیال کنم درسته؟
ربطی به ورژن جدید یا قدیم نداره، دیگه نیاز به اون کتابخانه نخواهید داشت، چه قدیمی، چه جدید. بله، باید دوباره کامپایل بشه.