# Native Code > برنامه نویسی با C > برنامه نویسی GTK، GTK+‎ و wxWidget > سوال: اجرا برنامه های  wxwidgets در سایر سیستم عامل ها

## یا صاحب الزمان

با سلام.
یه سوال ساده داشتم.ببخشید که وقتتون رو می گیرم.
می خواستم ببینم این که میگن برنامه هایی که با wxwidget نوشته میشن تو همه سیستم عاملها اجرا میشن یعنی این که یه برنامه فقط یه بار کامپایل می شه و در همه سیستم عاملها اجرا می شه یا برای هر سیستم عاملی باید یه کامپایل رو همون سیستم عامل داشته باشیم.یعنی در اصل میشه چند نرم افزار.
بعد اگه برای هر سیستم عامل باید یه کامپایل از کد رو در اون سیستم عامل داشه باشیم اونوقت کدی که مثلا با vC++‎ نوشته می شه باید چطور در لینوکس کامپایل بشه؟و اگر نیاز به کامپایل دوباره نباشه، یعنی این که برناممون می تونه در لینوکس هم اجرا بشه؟(البته با توجه به اموزش اقایamir_saniyan در ابتدای فرم   http://www.barnamenevis.org/showthread.php?t=111779) 
 امیدوارم سوالم رو واضح بیان کرده باشم.
خیلی ممنون

----------


## Nima_NF

> برای هر سیستم عاملی باید یه کامپایل رو همون سیستم عامل داشته باشیم.یعنی در اصل میشه چند نرم افزار.


دقیقا همین.

شما اگر قرار هست برای ویندوز برنامه بنویسید، یعنی پلتفرم win32. پس فرقی نمی کند کدام کامپایلر ویندوز باشد، هر کامپایلری که wxwidgets پشتیبانی کند و SDK ویندوز را نیز کامل داشته باشد. از آنجایی که هر کامپایلر وقتی پروژه می سازید یکسری فلگ define می شود، wxwidgets از همان ها استفاده می کند و تشخیص می دهد از کدام کتابخانه استفاده کند. ضمنا شما هم می توانید در کد های خود با define تعیین کنید که کدام پلتفرم هست یا در قسمت properties کامپایلر وارد کنید. مثلا WIN32, __WXMSW__, _WINDOWS برای ویندوز .

علاوه بر آن شما کتابخانه های مثلا لینوکس را در ویندوز نصب نمی کنید، این کتابخانه ها نیازمند سیستم عامل لینوکس هستند، پس تداخل پیش نمی آید و با gcc را حت کامپایل می کنید.

در نتیجه شما برای هر سیستم عامل یک فایل اجرایی (برنامه) جداگانه خواهید داشت. به همین خاطر هست که سرعت این سری برنامه ها بالاتر از سایر تکنولوژی ها شبیه سازی هست. چون مستقیم از کتابخانه ها همان سیستم عامل استفاده می کنند و برنامه کامپایل می شود.




> اونوقت کدی که مثلا با vC++‎ نوشته می شه باید چطور در لینوکس کامپایل بشه؟


برنامه شما یکسری فایل cpp و .h هست، پس به راحتی آن ها را به سایر سیستم عامل ها ببرید و یک پروژه مثلا در Xcode در mac بسازید و این فایل ها را به آن اضافه کنید، احتمالا اگر نیازمند تغییرات اندکی هست آن ها را اعمال کنید. (شما فایل های دیگر پروژه مانند *.vcproj که مخصوص VC++‎ هست را نیاز ندارید.)

----------

