چگونه از کامپایلر‌های متن باز در ویندوز استفاده کنیم

8 09 2009

بروز بودن یه برنامه نویس اول از همه نیازمند تلاش خود اون شخصه و در وحله‌ی بعد نیازمند بروز بودن امکانات اونه. چه چیزی بهتر از کامپایلر‌های متن باز و آزاد که هم به روز هستن و هم قوی و در نهایت رایگان.

gccegg-65کمتر کسی از جامعه‌ی برنامه نویسی اسم gcc رو نشنیده. gcc کامپایلریه که نامش از سر‌کلمه‌های Gnu Compiler Collection گرفته شده و ریچارد استالمن در سال 1985 برای ترجمه‌ی برنامه‌های نوشته شده به زبون c اون شروع به ساخت کرد. (منبع، اطلاعات بیشتر، وب‌سایت پروژه)

برای داشتن قدرت و امکانات gcc لزومی نداره که کاربر، سیستم‌عامل خاصی، به عنوان مثال gnu/linux یا gnu/hurd داشته باشه.
توی این پست نحوه‌ی استفاده از GCC توی ویندوز رو توضیح می‌دم.

قبل از هرچیز به MinGW نیاز داریم. که می‌تونیم از این لینک نسخه‌ی 5.1.4 اون رو دریافت کنید. حجم زیادی هم نداره و در حقیقت یه برنامه برای دانلود بسته‌های مورد نیاز هستش.

  • اون رو اجرا کنید.
  • پنجره‌ی خوشامد گویی رو با کلید Next جواب بدین.
  • اگر روی سیستمی که برنامه رو اجرا کردین می‌خواین برنامه رو نصب کنید که Download and Install رو انتخاب کنید و اگر می‌خواین فقط بسته‌ها رو دانلود کنید، Download only رو انتخاب کنید و کلید Next رو بزنید.
  • با پروانه‌ی استفاده و توزیع مجدد در صورتی که موافقت دارید، با زدن کلید I Agree موافقت کنید.
  • بذارین بسته‌های نسخه‌ی Current نصب شه. پس Next رو کلیک کنید.
  • کامپایلر‌هایی که نیاز دارین رو علامت دار کنید و با Next به صفحه‌ی بعد برین.
  • مکان نصب رو انتخاب کنید و Next رو کلیلک کنید.
  • در انتها هم با زدن کلید Install منتظر دانلود شدن (و احتمالا نصب) بسته‌ها باشید.

خب تا اینجا که فقط نصب برنامه بود که خیلی آسون هم بود. اما یه کد نویس علاوه بر کامپایلر به محیط توسعه (IDE) هم نیاز داره. ما که همه چیز رو به صورت آزاد داشتیم، بد نیست از IDE های آزاد هم استفاده کنیم. برای کار‌های کوچیک Notepad++ برنامه‌ی خوبیه ولی من به Geany عادت کردم و اون رو هم به شما پیشنهاد می‌کنم.

اما یه کار کوچولوی دیگه هم اگر انجام بدیم کارمون خیلی راحت تر می‌شه. من فرض رو بر این می‌ذارم که شما این MinGW رو توی درایو C ویندوز نصب کردین. اگر اینطور نیست توی توضیحات به جای این آدرس، محل نصب نرم‌افزار تو سیستمتون رو بذارین. این توضیحات برای ویندوز XP هستش و برای نسخه‌های دیگه‌ی ویندوز روال مشابهی طی می‌شه.

  • به Control Panel برین.
  • اگر گزینه‌ی Performanceand Maintenance رو می‌بینید (کنترل پانل به صورت Category view هست) رو بزنید.
  • System رو انتخاب کنید و اون رو باز کنید.
  • سربرگ Advanced رو انتخاب کنید.
  • از پایین پنجره کلید Environment Variables رو بزنید.
  • از لیست System variables دنبال Path بگردین و از پایین لیست Edit رو کلیک کنید.
  • متن زیر رو که آدرس پوشه‌ی bin نرم‌افزار MinGW نصب شدست رو به همراه یک سیمی‌کالن به ابتداری متن کادر Variable value اضافه کنید:
    C:\MinGW\bin;
  • تمام پنجره‌های باز رو با زدن کلید Ok ببندین.

خب، از این به بعد می‌تونید بدون تایپ کردن آدرس از g++ و امکانات دیگه استفاده کنید.

اما اگر Geany رو نصب کردین، از همون تو می‌تونید برنامه رو کامپایل کنید (F8) یا فایل اجرایی رو تولید کنید (F9) و یا برنامه رو اجرا کنید (F5). پس کد زیر رو توی اون کپی کنید، با نام hello.cpp سیو کنید و بعد F9 رو از روی صفحه‌کلید بزنید و بعد برای اجرای اون کلید F5 رو بزنید. به همین راحتی!
#include<iostream>
using namespace std;
int main(int argc, char** argv){
    cout << "Hello MinGW!\tHello Geany!\n";
    return 0;
}

خب امیدوارم این پست براتون مفید باشه. بد نیست برنامه‌ی Cygwin رو هم تست کنید!
محیط توسعه‌ی Netbeans هم خیلی آسون و سریع و قدرتمنه. بد نیست اون رو هم تست کنید.
پ‌ن: این پست هم تقدیم به ایشون که بسیار با اراده و مصمم دارن برنامه نویسی رو یاد می‌گیرن.
پ‌ن: یک نمونه‌ی کار بسیار عالی رو هم می‌تونید اینجا ببینید


بروز رسانی

توی نظرات بحث گرمی در گرفت. خیلی‌ها از جمله خود من با فایل w32api-3.13-mingw32-dev.tar.gz مشکل داشتن که ساسان عزیز یه راه حل خیلی خوب پیشنهاد داد. Mirror دانلود رو عوض کنید تا مشکل حل بشه!


کارها

اطلاعات

25 جواب

9 09 2009
مجید

یک راهنما برای کاربران ویندوزی !
اینجاش باحاله ;)
:::::::::: پنجره‌ی خوشامد گویی رو با کلید Next جواب بدین

11 09 2009
ساسان

گفتی MinGW. امروز میخواستم نصبش کنم فایل Win32 API مشکل داشت و Extract نمی شد. کلی اعصابم رو خورد کرد.

12 09 2009
Saar

بله. من هم همین مشکل رو داشتم. ولی فکر کردم مشکل از دانلود منه. من اینطور این مشکل رو حل کردم. اومدم و فایل w32api-3.13-mingw32-dev.tar.gz رو دستی از این لینک یا این لینک دانلود کردم و گذاشتم کنار فایل‌هایی که برنامه خودش دانلود کرده و دوباره برنامه‌ی نصب رو اجرا کردم و مشکل حل شد. شما هم این رو تست کنید شاید برای شما هم جواب داد.

خیلی ممنون که این مورد رو گوشزد کردین.

12 09 2009
ساسان

ممنون ولی این کار هم مشکل من رو حل نکرد. من چند ماه پیش این MinGW رو کامل نصب کرده بودم و از فولدر C:\MinGW بک آپ گرفتم. حالا میتونم همون رو کپی کنم و ازش استفاده کنم؟ مشکلی نداره؟

12 09 2009
حسین

سلام من دانلود کردم و بدون install باید چگونه نصبش کنم البته تا یه جاهایی پیش رفتم ولی الان مثلا بسته tar رو نمیتونم نصب کنم منظورم نرم افزار tar
چون بسته ها با tar باز میشن!

12 09 2009
Saar

اگه بخوایم یکم باز تر کنیم این فرایند رو، شما یه برنامه دارین که یک سری بسته رو در درجه‌ی اول دانلود می‌کنه. و در درجه‌ی دوم اون‌ها رو نصب میکنه. شما به باز کردن فایل tar نیازی ندارین و این خود برنامست این کار رو برای شما انجام می‌ده. در صورتی که توی سیستم عامل شما برنامه‌ی tar وجود داشته باشه، که تمام گنو/لینوکس‌ها این برنامه همراه خودشون هست، فقط کافیه دستور زیر رو برای extract کردن فایل tar بزنید:
tar vxf myfile.tar
پس شما باید ابتدا با همین برنامه روی یه سیستم که دسترسی به اینترنت داره فایل‌ها رو بذارین دانلود بشن که می‌رن توی یه پوشه که معمولن کنار فایل اجرایی برنامه هست. بعد اون فایل‌ها رو جابجا کنید و به سیستمی که می‌خواین این رو داشته باشین بیارین. و توی سیستم مقصد همون بسته ها رو با همون برنامه نصب کنید. کار آسونیه.

12 09 2009
javad33

سلام.
ممنون. کاربردی و کامل بود.
NetBeans هم حرف نداره! هم باهاش C++ نوشتم هم Python جدیدا هم زدم تو کار j2me. خیلی خوب با آدم راه میاد.
موفق باشید.

12 09 2009
Saar

بله. من با نت بینز هم سی می‌نویسم و هم جاوا اونم همه رقم جاوا. فوق العادست.

13 09 2009
حسین

سلام، من نسخه ای از mingw رو گرفتم که خودم باید کامپایل کنم (به دلیل اینترنت زغالی)
خودش اینکار رو نمیکنه طبق راهنمای سایتش که پیش رفتم : اول بسته های zlib, gzip رو برای ویندوز گرفتم و نصب شد. مشکل نصب نشدن و نشناختن tar هست با اینکه بسته رو نصب کردم! در کل نتونستم! اگه tar رو بشناسونم(منظورم در Environment Variable)
میتونم نصب کنم! راهنمایی از این سایت رو گرفتم:

http://www.mingw.org/wiki/HOWTO_Install_the_MinGW_GCC_Compiler_Suite

13 09 2009
Saar

خب می‌خواین tar رو با برنامه‌ی winrar که برای ویندوزه اکسترکت کنید و تمام پوشه‌های بسته رو با بسته‌ی mingw مرج کنید. اینطور مشکل فکر می‌کنم حل شه.

13 09 2009
marmooolak

آقا خیلی از دستت شاکیم . کلی وقت گذاشتم نرم افزار رو دانلود کردم و هر کاری کردم نصب نشد . برای وقت مردم ارزش قاعل باش .

13 09 2009
Saar

آقا شرمنده، ببخشید ولی من این برنامه رو ننوشتم و برنامه‌ی معروفی هم هست. حالا شما نتونستی نصب کنی، خب یکم تلاش کن، من و خیلی‌های دیگه دقیقن به همین روش که نوشتم اون رو نصب کردن.

13 09 2009
marmooolak

خیلی بی شخصیتید . وقتم را برای این نرم افزاری که ران نمی شه تلف کردم

13 09 2009
Saar

کاش به جای فحش دادن به من یکم بیشتر تلاش می‌کردین.

13 09 2009
marmooolak

درستش کردم
به جای w32api-3.13-mingw32
w32api-3.12-mingw32 را download کنید و بعد اسمش رو به w32api-3.13-mingw32
و دوباره نصب رو بزنید .

13 09 2009
Saar

خب این نشون می‌ده که فرایند دانلود بسته‌ی w32api-3.13-mingw32 برای شما فرایندی همراه با خطا بوده. شاید با این پیشنهاد شما مشکل حل شده باشه ولی خیلی بهتره که سعی کنید اون فایل رو دوباره دانلود کنید و نصب کنید. بهتره که MD5 فایل دانلود شده رو چک کنید. این check-sum اون فایل هست.
w32api-3.13-mingw32-dev.tar.gz   a50fff6bc1e1542451722e2650cb53b4

13 09 2009
حسین

خوب من این کار رو کردم ولی نشده! یعنی ادامه دستوراتش کار نمیکنه!
ببینم شما تاحالا به این صورت نصب کردید؟
اگه بله ،امکانش هست دستوراتی که زده اید رو من ببینم؟ در cmd
متشکر

13 09 2009
Saar

راستش کامپایل کردن توی ویندوز فکر نمی‌کنم به این راحتی‌ها عملی باشه چون به یه کامپایلر نیاز داریم که اون رو نداریم و قراره با این روش اون رو نصب کنیم.
اگر بسته‌های tar رو برای ویندوز گرفتین، اون‌ها رو یک جا extract کنید، مثلا c:\mytar بعد خب توی این پوشه پوشه‌ای خواهین داشت به نام bin که کافیه آدرس این پوشه‌ی bin رو همون طور که توی پست توضیح دادم به عنوام ادامه‌ی محتویات متغیر Path اضافه کنید. اینطور هر جا بنویسین tar (البته توی cmd) می‌تونید بسته‌های tar رو بسازین یا اکسترکت کنید.
توی قسمت Manual Installation اون لینک که به من دادین، دو تا برنامه هست برای فایل‌های فشرده و بسته‌های TAR. اگر می‌خواین دستی برنامه رو نصب کنید، اون راهنما رو ببینید.
در کل چه از برنامه‌ی نصب خود کار استفاده کنید و چه از نصب دستی، هر دو حالت یک کار رو انجام می‌دن.

15 09 2009
ساسان

من آدرس رو هم اضافه کردم به Path های سیستم ولی هیچ! اصلا کار نمیکنه و دستورات gcc و g++ رو اصلا نمیشناسه این ویندوز زبون نفهم. تو اوبونتو نصب راه اندازی این GGC فقط یه خط کار داره. من تو اوبونتو از Geany استفاده میکنم برم ببینم نسخه ویندوزش چه جوریه.

15 09 2009
Saar

آره. اون path رو یک بار با دقت چک کن. من کلی برنامه، حتی فایر فاکس رو هم بهش اضافه کردم و مثل اوبونتو و کلن گنو/لینوکس تمام برنامه هام رو با تایپ اسمش اجرا می‌کنم.
راستی اگه اینترنت پر سرعت داری، حتمن Netbeansرو دانلود و نصب کن. برای c++عالیه. امکاناتش هم فوق العادست.

15 09 2009
ساسان

تمام مشکل از فایل w32api-3.13-mingw32-dev.tar.gz بود. Mirror سایت SF رو عوض کردم و درست دانلود شد. Installer هم درست کار کرد. الان هم با CMD درست کار میکنه و هم با Geany
Netbeans رو هم دارم ولی زیاد ازش سر در نمیارم. کلا با CMD و bash خیلی راحت ترم.
ممنون.

4 10 2009
پیمان امین بیگی

آقا ممنونم انتقاد سازنده شما باعث تحول در من و وبلاگم شد ( البته داره می شه ) دارم یه تغیراتی در وبلاگم ایجاد می کنم می شه بیاید و نظرتون رو در مورد این تغیرات بهم بگید

11 11 2009
مریم

سلام
بحث های اینجاتون که خیلی تخصصیه من سعی می کنم در اینده ای نه چندان دور بفهممش
یه سوال آماتور و واقعا احمقانه داشتم
من چهار تا jdk مختلف برای لینوکس دانلود کردم همشون آخرشون پسوند bin. دارن ولی دوتاشون اخرش نوشته x64 و دوتای دیگش نوشته i586 و البته دوتاشون هم قبل اون پسوند بین یه rpm. هم دارند
سوال اینجاست : هیچکدوم نصب نمیشه(تو ubuntu 9.04 ) همش میگه نمی تونه این فایل رو بخونه….از توی ترمینال هم که دستور sudo……. و اینا رو نوشتم نشد
اصلا جالبه من eclipse رو که گذاشتم بدون احتیاج jdk داره کار می کنه و کامپایل می کنه ولی netbeans حتما یه مسیر jdk نصب شده می خواد تا اصلا نصب بشه
آقای — میشه مفصل راهنمایی کنید گیر این کاربر اماتور ubuntu کجاست؟
ممنون

12 11 2009
Saar

خب بسته به معماری CPU آپشن‌های مختلفی برای نرم‌افزار ها هست. چه لینوکس و چه غیر لینوکس. اگر CPU شما 64 بیتیه، خب از اون x64 استفاده کنید . اون i586 هم نشون دهنده‌ی سازگار بودن با CPU های اینتل i586 و i686 هستش که تقریبن همه‌ی CPU های جدید اینتل رو می‌تونیم توی این دسته جا بدیم.
خب اما rpm مخفف red-hat package manager هستش که برای توزیع‌هایی از گنو/لینوکس که red-hat Base هستن، مثل Suse یا Fedora کاربرد داره.
و اون bin که مخفف binary هستش. اون رو باید نصب کنید. ولی چون اون فایل اجرایی نیست، باید به اون اجازه‌ی اجرا شدن داد. با دستور زیر:
chmod +x myfile.bin
و بعد با دستور زیر اون رو اجرا کرد:
./myfile.bin
اما خب بهترین راه اینه که JDK رو از مخازن نصب کرد. خیلی خیلی بهتره!
موفق باشید.

12 09 2009
Saar

بله بله بله! من هم این بک آپ رو همیشه می‌گیرم و همیشه جواب می‌ده. فقط دقت کنید که متغیر‌های محلی رو در هر صورت باید تغییر بدین.

دیدگاه‌تان را بنویسید: