hamid206
Registered User
- تاریخ عضویت
- 26 فوریه 2005
- نوشتهها
- 239
- لایکها
- 2
کامپایل یه برنامه ساده تک فایلی
در زیر روش کامپایل یک برنامه با نام hi را از فایلی به نام hi.cpp توضیح می دهم
کد برنامه hi.cpp
#include <iostream>
using std::cout;
int main()
{
cout<<”hi”;
return 0;
}
حال دستور زیر را برای کامپایل برنامه در g++ وارد می کنم
G++ -o hi hi.cpp
شما با این کار برنامه به نام hi را از فایلی به نام hi.cpp ایجاد نموده اید برای اجرای برنامه کافیست در خط فرمان دستور زیر را وارد کنید
./hi
در لینوکس برنامه ها پسوند خاصی ندارند ولی برای اطلاع بیشتر پسوند برنامه شما .out است که برای اجرای برنامه خود لازم نیست انرا بنویسید . روش دیگری نیز برای کامپایل برنامه وجود دارد که در این روش شما ابتدا فایل ابجکت برنامه را ایجاد می کنید یعنی ابتدا انرا به زبان ماشین تبدیل می کنید سپس فایل ابجکت خود را کامپایل می کنید
g++ -c hi.cpp
g++ hi.o -o hi
در واقع روش دوم نیز نتیجه ای مانند روش اول می دهد با این تفاوت که در روش دوم شما ابتدا برنامه خود را به زبان ماشین تبدیل می کنید و سپس فایل ایجاد شده را به کتابخانه سیستم لینک می کنید ولی در این روش فایلی مانند hi.o نیز در سیستم شما ایجاد می شود ولی روش اول در ضمن کامپایل این فایل را ایجاد سپس پاک می نماید.
توجه : اگر شما عبارت –o hi را فراموش کنید نام پیش فرض برنامه شما a.out می شود.
نحوه کامپایل برنامه هایی که از چند فایل تشکیل شده اند
من می خوام برنامه ای رو کامپایل کنم نامش hamid هست و از دو فایل h1.cpp و h2.cpp تشکیل شده برای اینکار دستور زیر را در کنسول وارد می کنم
g++ h1.cpp h2.cpp -o hamid
همین نتیجه رو میشه با وارد کردن سه خط دستور به دست اورد
g++ -c h1.cpp
g++ -c h2.cpp
g++ h1.o h2.o -o hamid
مزیت روش دوم نسبت به روش اول این هست که ما هر کدام از فایل های برنامه رو بصورت جدا کامپایل می کنیم نه بصورت یکجا اهمیت این مسئله در اینجاست که اگه شما یه روزی خواستید برنامه خودتون رو اپدیت کنید نیاز ندارید دوباره همه فایل ها رو کامپایل کنید مثلا من h1.cpp رو تغییر می دم و حال دستور زیر را برای کامپایل شان وارد می کنم
g++ -c h1.cpp
g++ h1.o h2.o -o hamid
روش دیگرنیز برای کامپایل برنامه هایی که از چند فایل تشکیل شده اند وجود دارد
روش دوم
استفاده از دستور make و ساخت makefile
MAKEFILE همون فايليه كه به كامپايلر مي گه از يه تعدادي فايل سورس چه طوري بايد يه فايل اجرايي بسازه. اگه موقع توسعه يه نرم افزار واسه كامپايل اون MAKEFILE ننويسين، اونوقت مجبورين دستور كامپايل هر فايل سورس رو جداگانه صادر كنين و خودتون يادتون باشه كه كدوم فايل بعد از آخرين كامپايل تغيير كرده و نياز به كامپايل مجدد داره و كلي مصائب ديگه، ولي اگه MAKEFILE نوشته باشين فقط كافيه كه برنامه make رو اجرا كنين و اون خودش واستون كار كامپايل رو انجام مي ده (البته اگه MAKEFILE رو درست نوشته باشين). شما وقتي تو محيط يه IDE هم برنامه مي نويسين، اون IDE كار ساختن MAKEFILE رو در پس زمينه واستون انجام مي ده و بعد كامپايلر رو صدا مي زنه
زمانی که ما برنامه های بزرگ می نویسیم استفاده از ابزار make برای کامپایل برنامه بسیار عالی است.
Make از دستورات makefile که از سورس ها ساخته شده برای ساخت برنامه استفاده می کنه.
Makefile شامل لیستی از عبارت ها و جمله هاست که باید برای ساخت برنامه انجام بشه . به عنوان مثال من برای برنامه hi یک makefile ایجاد می کنم
hi: hi.o
g++ -o hi hi.o
hi.o: hi.cpp
g++ -c -o hi.o hi.cpp
که این رو باید با پسوند Makefile.hi ذخیره کنید
که به make میگه برای ساخت یک برنامه اجرایی hi وابسته هست به hi.o که با نوشتن این دستور در خط فرمان ایجاد میشه g++ -o hi hi.o و hi.o وابسته هست به hi.cpp که با استفاده از دستور
g++ -c -o hi.o hi.cpp ایجاد میشه ( -c به کامپایلر میگه بعد از اجرای این مرحله متوقف بشه)
برای اجرای دستور make من فایل hi.cpp و Makefile.hi رو در مسیر زیر کپی می کنم
/home/hamid
خوب حالا دستور زیر رو برای ساخت برنامه می دم
Make -f /home/hamid/Makefile.hi
در همون دایرکتوری ( /home/hamid ) برام برنامه hi رو درست میکنه که برای اجراش دستور زیر را وارد می کنم
/home/hamid/hi
منابع
http://hepwww.ph.qmul.ac.uk/sim/gcclinux.html?desc=
Compiling+and+Running+C%2B%2B+programs+on+Linux&file=gcclinux.html
http://galton.uchicago.edu/~gosset/Compdocs/gcc.html
در پست های بعدی در این مورد بیشتر مثال میزنم
در زیر روش کامپایل یک برنامه با نام hi را از فایلی به نام hi.cpp توضیح می دهم
کد برنامه hi.cpp
#include <iostream>
using std::cout;
int main()
{
cout<<”hi”;
return 0;
}
حال دستور زیر را برای کامپایل برنامه در g++ وارد می کنم
G++ -o hi hi.cpp
شما با این کار برنامه به نام hi را از فایلی به نام hi.cpp ایجاد نموده اید برای اجرای برنامه کافیست در خط فرمان دستور زیر را وارد کنید
./hi
در لینوکس برنامه ها پسوند خاصی ندارند ولی برای اطلاع بیشتر پسوند برنامه شما .out است که برای اجرای برنامه خود لازم نیست انرا بنویسید . روش دیگری نیز برای کامپایل برنامه وجود دارد که در این روش شما ابتدا فایل ابجکت برنامه را ایجاد می کنید یعنی ابتدا انرا به زبان ماشین تبدیل می کنید سپس فایل ابجکت خود را کامپایل می کنید
g++ -c hi.cpp
g++ hi.o -o hi
در واقع روش دوم نیز نتیجه ای مانند روش اول می دهد با این تفاوت که در روش دوم شما ابتدا برنامه خود را به زبان ماشین تبدیل می کنید و سپس فایل ایجاد شده را به کتابخانه سیستم لینک می کنید ولی در این روش فایلی مانند hi.o نیز در سیستم شما ایجاد می شود ولی روش اول در ضمن کامپایل این فایل را ایجاد سپس پاک می نماید.
توجه : اگر شما عبارت –o hi را فراموش کنید نام پیش فرض برنامه شما a.out می شود.
نحوه کامپایل برنامه هایی که از چند فایل تشکیل شده اند
من می خوام برنامه ای رو کامپایل کنم نامش hamid هست و از دو فایل h1.cpp و h2.cpp تشکیل شده برای اینکار دستور زیر را در کنسول وارد می کنم
g++ h1.cpp h2.cpp -o hamid
همین نتیجه رو میشه با وارد کردن سه خط دستور به دست اورد
g++ -c h1.cpp
g++ -c h2.cpp
g++ h1.o h2.o -o hamid
مزیت روش دوم نسبت به روش اول این هست که ما هر کدام از فایل های برنامه رو بصورت جدا کامپایل می کنیم نه بصورت یکجا اهمیت این مسئله در اینجاست که اگه شما یه روزی خواستید برنامه خودتون رو اپدیت کنید نیاز ندارید دوباره همه فایل ها رو کامپایل کنید مثلا من h1.cpp رو تغییر می دم و حال دستور زیر را برای کامپایل شان وارد می کنم
g++ -c h1.cpp
g++ h1.o h2.o -o hamid
روش دیگرنیز برای کامپایل برنامه هایی که از چند فایل تشکیل شده اند وجود دارد
روش دوم
استفاده از دستور make و ساخت makefile
MAKEFILE همون فايليه كه به كامپايلر مي گه از يه تعدادي فايل سورس چه طوري بايد يه فايل اجرايي بسازه. اگه موقع توسعه يه نرم افزار واسه كامپايل اون MAKEFILE ننويسين، اونوقت مجبورين دستور كامپايل هر فايل سورس رو جداگانه صادر كنين و خودتون يادتون باشه كه كدوم فايل بعد از آخرين كامپايل تغيير كرده و نياز به كامپايل مجدد داره و كلي مصائب ديگه، ولي اگه MAKEFILE نوشته باشين فقط كافيه كه برنامه make رو اجرا كنين و اون خودش واستون كار كامپايل رو انجام مي ده (البته اگه MAKEFILE رو درست نوشته باشين). شما وقتي تو محيط يه IDE هم برنامه مي نويسين، اون IDE كار ساختن MAKEFILE رو در پس زمينه واستون انجام مي ده و بعد كامپايلر رو صدا مي زنه
زمانی که ما برنامه های بزرگ می نویسیم استفاده از ابزار make برای کامپایل برنامه بسیار عالی است.
Make از دستورات makefile که از سورس ها ساخته شده برای ساخت برنامه استفاده می کنه.
Makefile شامل لیستی از عبارت ها و جمله هاست که باید برای ساخت برنامه انجام بشه . به عنوان مثال من برای برنامه hi یک makefile ایجاد می کنم
hi: hi.o
g++ -o hi hi.o
hi.o: hi.cpp
g++ -c -o hi.o hi.cpp
که این رو باید با پسوند Makefile.hi ذخیره کنید
که به make میگه برای ساخت یک برنامه اجرایی hi وابسته هست به hi.o که با نوشتن این دستور در خط فرمان ایجاد میشه g++ -o hi hi.o و hi.o وابسته هست به hi.cpp که با استفاده از دستور
g++ -c -o hi.o hi.cpp ایجاد میشه ( -c به کامپایلر میگه بعد از اجرای این مرحله متوقف بشه)
برای اجرای دستور make من فایل hi.cpp و Makefile.hi رو در مسیر زیر کپی می کنم
/home/hamid
خوب حالا دستور زیر رو برای ساخت برنامه می دم
Make -f /home/hamid/Makefile.hi
در همون دایرکتوری ( /home/hamid ) برام برنامه hi رو درست میکنه که برای اجراش دستور زیر را وارد می کنم
/home/hamid/hi
منابع
http://hepwww.ph.qmul.ac.uk/sim/gcclinux.html?desc=
Compiling+and+Running+C%2B%2B+programs+on+Linux&file=gcclinux.html
http://galton.uchicago.edu/~gosset/Compdocs/gcc.html
در پست های بعدی در این مورد بیشتر مثال میزنم