تور لحظه آخری
امروز : جمعه ، 18 آبان 1403    احادیث و روایات:  امام علی (ع):عريف بيش از استحقاق، چاپلوسى و كمتر از استحقاق، از ناتوانى در سخن و يا حسد است.
سرگرمی سبک زندگی سینما و تلویزیون فرهنگ و هنر پزشکی و سلامت اجتماع و خانواده تصویری دین و اندیشه ورزش اقتصادی سیاسی حوادث علم و فناوری سایتهای دانلود گوناگون شرکت ها

تبلیغات

تبلیغات متنی

صرافی ارکی چنج

صرافی rkchange

سایبان ماشین

دزدگیر منزل

تشریفات روناک

اجاره سند در شیراز

قیمت فنس

armanekasbokar

armanetejarat

صندوق تضمین

Future Innovate Tech

پی جو مشاغل برتر شیراز

لوله بازکنی تهران

آراد برندینگ

موسسه خیریه

واردات از چین

حمية السكري النوع الثاني

ناب مووی

دانلود فیلم

بانک کتاب

دریافت دیه موتورسیکلت از بیمه

قیمت پنجره دوجداره

بازسازی ساختمان

طراحی سایت تهران سایت

irspeedy

درج اگهی ویژه

تعمیرات مک بوک

دانلود فیلم هندی

قیمت فرش

درب فریم لس

زانوبند زاپیامکس

روغن بهران بردبار ۳۲۰

قیمت سرور اچ پی

خرید بلیط هواپیما

بلیط اتوبوس پایانه

قیمت سرور dl380 g10

تعمیرات پکیج کرج

لیست قیمت گوشی شیائومی

خرید فالوور

پوستر آنلاین

بهترین وکیل کرج

بهترین وکیل تهران

اوزمپیک چیست

خرید اکانت تریدینگ ویو

خرید از چین

خرید از چین

تجهیزات کافی شاپ

نگهداری از سالمند شبانه روزی در منزل

بی متال زیمنس

ساختمان پزشکان

ویزای چک

محصولات فوراور

خرید سرور اچ پی ماهان شبکه

دوربین سیمکارتی چرخشی

همکاری آی نو و گزینه دو

کاشت ابرو طبیعی و‌ سریع

الک آزمایشگاهی

الک آزمایشگاهی

 






آمار وبسایت

 تعداد کل بازدیدها : 1827526519




هواشناسی

نرخ طلا سکه و  ارز

قیمت خودرو

فال حافظ

تعبیر خواب

فال انبیاء

متن قرآن



اضافه به علاقمنديها ارسال اين مطلب به دوستان آرشيو تمام مطالب
archive  refresh

makefile چیست؟؟؟


واضح آرشیو وب فارسی:سایت ریسک: View Full Version : makefile چیست؟؟؟ bug2nd October 2008, 11:43 PMخواهش می کنم کمکم کنید... makefile در برنامه نویسی با linux چه کاری انجام میده؟؟؟؟؟؟:confused: samsamdragon3rd October 2008, 09:35 AMبا سلام اميدوارم كه خوشت بياد (منبع اين مطلب در اخر اين تاپيك اومده) می دانید که تنها زبان قابل درک برای کامپیوترها زبانی است معروف Machine Code یا زبان ماشین که از رشته پیوسته ای از اعداد تشکیل شده است. اگر یک فایل اجرایی باینری را در یک ویرایشگر هگز باز کنید، این رشته اعداد را معمولا می توانید به صورت اعداد دو رقمی پشت سر هم در مبنای ۱۶ ببینید. اما برنامه نوشتن به این زبان برای انسان تقریبا کشنده است! فقط تصور کنید چند سال ممکن است طول بکشد تا یک تیم حرفه ای از برنامه نویسان، نرم افزاری در حد و اندازه OpenOffice.org را مستقیما به زبان ماشین بنویسند. تازه اگر اصلا چنین کاری ممکن باشد، اصلا منطقی نیست. چراکه به احتمال قریب به یقین در آخر به خوبی OpenOffice.org فعلی از کار در نخواهد آمد! پس چاره چیست؟ برنامه نویسان از زبانهایی استفاده می کنند که، نسبت به زبان ماشین، به زبان انسانی بسیار نزدیک تر هستند و به ویژه برخی از آنها با توجه به فلسفه ساختشان برای پیشبرد پروژه های نرم افزاری بزرگ خیلی مناسب هستند. به اینگونه زبانها اصطلاحا زبانهای سطح بالا می گوییم. اما حالا مشکل دیگری پیش می آید. کامپیوترها اینگونه زبانها را درک نمی کنند. کامپایلر کامپایلرها وظیفه تبدیل زبانهای سطح بالا و قابل درک برای انسان را به سطح پایین ترین زبان، یعنی زبان ماشین به عهدا دارند. معمولا (تقریبا همیشه!) پروژه های نرم افزاری از بیش از یک فایل تشکیل شده اند که هر کدام بخشی از متن برنامه یا Source Code را در بر دارد. شما باید ابتدا هر فایل نوشته شده را جداگانه به وسیله کامپایلر به زبان ماشین تبدیل کنید. اصطلاحا به فایلهایی که در این مرحله تولید می شود، فایل Object می گویند. محتوای لین فایلها به زبان ماشین است، اما هنوز قابل اجرا توسط کامپیوتر نیستند! چرا؟ چون هر کدام از آن فایلها یا وابستگیهایی در فایلهای دیگر دارند که در این وضعیت برای سیستم غیر قابل تشخیص است، یا اساسا به تنهایی مفهومی ندارند که قابل اجرا باشند.مثلا ممکن است یکی از آنها حاوی مجموعه ای از دستورات (اصطلاحا تابع) باشد که روی ورودی خود پردازش خاصی انجام می دهند و نتیجه را برمی گردانند. اما این توابع زمانی مفید هستند که از جایی فراخوانی شوند و احتمالا فراخوانی تابع مورد نظر ما هم از داخل یکی از فایلهای Object دیگر صورت می گیرد. در اینجاست که شما باید با کمک لینکر آن فایلهای Object را به ترتیب مناسب به هم پیوند دهید تا در نهایت به یک فایل اجرایی دست پیدا کنید. یک مثال عملی فرض کنید برنامه ای به زبان C در یک فایل به نام main.c نوشته اید و حالا می خواهید آن را به فایل قابل اجرا توسط کامپیوتر تبدیل کنید. این کار به سادگی و در دو خط دستور (که می شود آنها را در یک خط هم خلاصه کرد) قابل اجرا است: $ gcc -c main.c $ gcc -o main main.o دستور اول از فایل C به نام main.c یک فایل Object به نام main.o می سازد و دستور دوم نیز از فایلmain.o یک فایل اجرایی به نام main می سازد که حالا دیگر می توانید آن را اجرا کنید. اما حالا فرض کنید که فایل main.c وابستگیهایی هم به دو فایل دیگر به نامهای dep.c و dep.h داشته باشد: $ gcc -c main.c $ gcc -c dep.c $ gcc -o main main.o dep.o می بینید که یک مرحله به مراحل کامپایل برنامه اضافه شد. حالا فرض کنید که به جای یک فایل یا سه فایل، این پروژه از دهها و صدها فایل تشکیل شده باشد. چند ساعت باید وقت صرف کنید تا پروژه را کامپایل کنید، تازه اگر همه چیز به خوبی پیش برود؟ به همه اینها اضافه کنید گزینه های خط دستور کامپایلر را که گاهی کار کامپایل از خط دستور را به فرایندی بسیار پیچیده تبدیل می کنند. حالا هربار که تغییراتی دربرنامه بدهید، باید همه کارها را از اول انجام دهید. یا به اندازه کافی فصفر بسوزانید و به خاطر داشته باشد که هر بار در کدام فایلها تغییر داده اید تا فقط آنها را کامپایل کنید و کمی وقت کمتری صرف کنید! آیا راه بهتری نیست؟ Makefile چقدر خوب می شد اگر می توانستید همه این دستورات کامپایل را فقط یک بار تایپ کنید. خبر خوب! می توانید همه این دستورات را در فایل که به Makefile معروف است قرار دهید و برنامه ای به نام make را اجرا کنید تا آن برنامه خودش از روی Makefile برایتان بقیه کارها را انجام دهد و خروجی نهایی قابل اجرا را بسازد. پس Makefile مجموعه دستورات لازم برای کامپایل یک پروژه نرم افزاری است که در قالبی خاص در یک فایل متنی ذخیره شده است. به خصوص اگر شما برنامه نویس نباشید، برایتان قابل توجه خواهد بود که مجبور نیستید هربار اینهمه دستورات عجیب و غریب را تایپ کنید و تنها با تایپ دستور make زندگی برایتان آسان می شود. make همانطور که اشاره شد، make برنامه ای است که از روی Makefile کار کامپایل پروژه را انجام می دهد. در کل دو مزیت عمده می توان برای make در نظر گرفت: ۱/همانطور که قبلا هم گفتم با استفاده از Makefile کارهای سخت (نوشتن دستورات پیچیده کامپایل) فقط یکبار انجام می شود. ۲/make از روی برچسب زمانی فایلهای سورس و Object تشخیص می دهد که کدامیک از فایلها نیاز به دوباره کامپایل شدن دارند و به این ترتیب از کامپایل مجدد و غیر ضروری فایلهایی که از زمان آخرین کامپایل تغییری نکرده اند، جلوگیری می شود. چراکه فرایندکامپایل به ویژه در کامپیوترهای قدیمی و با پروژه های بزرگ کاری بسیار وقت گیر است. make بعد از فراخوانی به ترتیب دنبال یک فایل با یکی از نامهای GNUmakefile، makefile یا Makefile می گردد تا دستورات کامپایل را از داخل آن خوانده و اجرا کند. برگرفته از سايت :shabaneh.ir secret6331st January 2009, 10:33 PMچه جوري ميشه كامپايل ر وتغيير داد؟ سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود




این صفحه را در گوگل محبوب کنید

[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 610]

bt

اضافه شدن مطلب/حذف مطلب







-


گوناگون

پربازدیدترینها
طراحی وب>


صفحه اول | تمام مطالب | RSS | ارتباط با ما
1390© تمامی حقوق این سایت متعلق به سایت واضح می باشد.
این سایت در ستاد ساماندهی وزارت فرهنگ و ارشاد اسلامی ثبت شده است و پیرو قوانین جمهوری اسلامی ایران می باشد. لطفا در صورت برخورد با مطالب و صفحات خلاف قوانین در سایت آن را به ما اطلاع دهید
پایگاه خبری واضح کاری از شرکت طراحی سایت اینتن