انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: khajavi در 15 اردیبهشت 1387، 02:50 بظ
-
توی ویندوز هر برنامه دارای یک سری dll هست. معادل این dll ها توی لینوکس چی هست. (تا حالا توی ویندوز برنامه ننوشتم.)
در ضمن یه سوال دیگه دارم. فرض کنیم. یه برنامه نوشتم برای لینوکس و حالا میخوام توی ویندوز هم کامپایل کنم. این وسط اگه بخوام توی ویندوز از dll ها استفاده کنم مسلما برنامه ی من portable نمیشه و باید برای ویندوز سورسم را تغییر بدم. آیا درست می گم؟
-
توی لینوکس فایلهایی با پسوند so. دقیقاً همین کار را انجام میدهند و آن هم مخفف shared object است.
در هر صورت با نوشتن هر برنامهای از همچین فایلهایی استفاده میکنید( چون به هر حال از header هایی استفاده خواهید کرد.)
ولی در بعضی از برنامههای ویندوز این فایلها کلی نیستند و فقط در یک برنامهی
خاص کاربرد دارند معادل این dll ها در لینوکس همان object file ها هستند که با پسوند o. مشخص میشوند. و میتوانید با استفاده از gcc -c برنامهی c خود را
تبدیل به یک object file کنید و در برنامهی دیگری از آن استفاده کنید.
-
filename.a :: این کتابخانه ها static اند و در هنگام کامپایل ب داخل برنامه ی شما کشیده می شوند.
filename.so :: این کتابخانه ها Dynamic اند و فقط درگاه شون در کد شما وارد میشه! لذا حجم کمتری رو ب برنامه ی شما می افزاید! ولی لازمه ک بسته ی منبع اش هم حتما در هنگام اجرای برنامه ی شما روی سیستم نصب باشه!
یعنی ی نوعی وابستگی دارند ب منبع اصلی! ولی با به روز شدن بسته اصلی شما دیگه نیازی ب کامپایل مجدد ندارید.