PDA

View Full Version : نحوه استفاده از Makefile ها



Bahmany
جمعه 25 اسفند 1385, 13:56 عصر
سلام
چطوری میشه از Makefile ها استفاده توی لینوکس استفاده کرد
مثلا یه پروژه رو بدون کمپایل کردن و با make file ها ساخت و استفاده کرد

Inprise
جمعه 25 اسفند 1385, 14:49 عصر
makefile پروسه کامپایل و لینک و install رو خودکار میکنه . میتونی بدون داشتن makefile هم هر پروژه ای رو بسازی و استفاده کنی اما وقتی تعداد فایلهای زیاد بشه کار خیلی خیلی سخت میشه . بعد از اینکه همهء بسته های لازم برای کامپایل و لینک و همینطور کتابخانه های استاندارد و make و ...را نصب کردی (*) کافی است که وارد دایرکتوری ای بشی که makefile ات اونجاست و دستور make رو اجرا کنی . البته اغلب اوقات makefile دارای مراحل مختلفی است که با خوندنش میتونی اینو بفهمی : مثلا گاهی اجرای make برای کامپایل و لینک و تولید باینری کافی است ، و گاهی ترجیح میدهند که مثلا make compile فایلها را کامپایل کند و make linkthem لینک کند و make checkinstalled بررسی کند که اگر قبلا نصب شده از حالت نصب خارجش کند و make install هم نصبش کند . برای دستوراتی که بعد از make در مثالی که نوشتم میبینی محدودیتی وجود نداره و این مساله کاملا اختیاری است و به نویسنده makefile بستگی داره . برای اینکه بفهمی روند صحیح ساختن و نصب پروژه چطور است کافیه makefile رو باز کنی و مرور کنی ، با یک نگاه سریع کل مساله رو میفهمی . معمولا هم یک راهنمای ساخت و نصب همراه هر پروژه ای هست که روند صحیح رو توضیح میده . به عنوان مثال برای کامپایل کردن کرنل لازمه اول یک فایل تنظیمات داشته باشی که مشخص میکنه عناصر کرنل به چه صورت ساخته بشن ، برای ساختن این فایل تنظیمات دستوری مثل این استفاده میشه : make menuconfig که یک برنامه جانبی رو کامپایل و اجرا میکنه که صرفا وظیفه اش ساختن فایل تنظیمات است ، و وقتی این فایل ساخته شد ، اجرای make باعث میشه کرنل "کامپایل" بشه ، make modules باعث میشه ماژولهای کرنل ساخته و لینک بشن ، و make install باعث میشه کرنل نصب بشه و تنظیمات مربوط به Boot Loader و غیره انجام بشن . گاهی اوقات در کنار این دستورات ، بسته به توزیع مورد استفاده از برنامه های جانبی برای ساختن Package آماده انتشار استفاده میشه . مثلا" بجای اجرای مستقیم make و make modules و make install ، میشه از دستوری مانند make-kpackage --revission=sample0.9 kernel_image برای ساختن یک بستهء deb. ( بستهء استاندارد توزیعهای مبتنی بر دبیان ) کامل استفاده کرد که تمام مراحل قبلی به علاوه ساختن deb رو خودکار میکنه .

در هر حال عموما" یک README همراه هر پروژه هست که توضیحاتش کافیه .