WINEGCC(1) Wine Developers Manual WINEGCC(1)

winegcc - کامپایلر C و ++C سازگار با MinGW برای Wine

winegcc [options] infile...

دستور winegcc یک پوسته‌پوش (wrapper) برای gcc است که تلاش می‌کند یک کامپایلر سازگار با MinGW را در لینوکس ارائه دهد. این ابزار بیش از همه برای توسعه‌دهندگان Win32 مفید است که می‌توانند به‌سادگی کد MinGW خود را از ویندوز آورده و بدون تغییر، آن را تحت Winelib در لینوکس دوباره کامپایل کنند. ابزار wineg++ نیز عمدتاً همان گزینه‌های winegcc را می‌پذیرد.

هدف winegcc این است که بتوان به‌راحتی gcc/g++/windres را با winegcc/wineg++/wrc در یک Makefile مربوط به MinGW جایگزین کرد و صرفاً برنامه را با استفاده از Winelib تحت Wine دوباره کامپایل نمود. اگرچه معمولاً تغییرات کوچکی باید در کد مبدأ برنامه یا Makefile اعمال شود، اما انجام آن‌ها به روشی که بین محیط‌های MinGW و Wine سازگار باشد، بسیار آسان است.

این راهنما تنها تفاوت‌های نسبت به gcc را مستند می‌کند؛ لطفاً برای اطلاعات بیشتر دربارهٔ آن گزینه‌ها به راهنمای gcc مراجعه کنید.

گزینه‌های gcc: تمام گزینه‌های gcc پشتیبانی می‌شوند و به کامپایلر پس‌زمینه (backend) هدایت می‌گردند.

سه‌تایی (triplet) معماری هدف را برای کامپایل چندسکویی (cross-compiling) مشخص می‌کند. سپس winegcc به‌جای gcc، دستور target-gcc را اجرا خواهد کرد.
دایرکتوری شیء (object) مربوط به Wine را مشخص می‌کند. این گزینه هنگام ساخت خودِ Wine، جهت استفاده از هدرها و کتابخانه‌ها از داخل درخت ساخت (build tree) استفاده می‌شود.
مسیر و نام فایل باینری winebuild را که به‌طور خودکار توسط winegcc راه‌اندازی می‌شود مشخص می‌کند. اگر تنظیم نشده باشد، winegcc در مسیر (PATH) به دنبال فایلی به نام winebuild خواهد گشت. این گزینه بر متغیر محیطی WINEBUILD اولویت دارد.
نوع دادهٔ زیرین wchar_t را بازنویسی کرده و آن را به نوع پیش‌فرض هدف تبدیل می‌کند، به‌جای استفاده از short unsigned int که پیش‌فرض Win32 است.
این گزینه آرگومان '--subsystem console' را برای ساخت برنامه‌های کنسولی به winebuild ارسال می‌کند. این رفتار پیش‌فرض است.
به‌جای پیوند خوردن با libc سیستم میزبان، از پیاده‌سازی MSVCRT در Wine استفاده می‌کند. این امر برای اکثریت قاطع برنامه‌های Win32 ضروری است، زیرا آن‌ها معمولاً به ویژگی‌های مختلف MSVCRT وابسته‌اند. این سوییچ توسط کامپایلر MinGW نیز در ویندوز برای پیوند خوردن با MSVCRT به‌جای Cygwin libc استفاده می‌شود. اشتراک نحوه نگارش با MinGW نوشتن Makefileهایی را که در Wine ،MinGW+MSYS یا MinGW+Cygwin کار کنند بسیار آسان می‌کند.
نقطهٔ ورود پیش‌فرض برنامه را به‌جای main() استاندارد، بر روی تابع یونیکد wmain() قرار می‌دهد.
این گزینه -lgdi32 ،-lcomdlg32 و -lshell32 را به فهرست کتابخانه‌های پیش‌فرض اضافه کرده و آرگومان '--subsystem windows' را جهت ساخت برنامه‌های گرافیکی به winebuild ارسال می‌کند.
هنگام پیوند دادن، از کتابخانه‌های استاندارد سیستم استفاده نمی‌کند. این موارد در کمترین حالت شامل -lkernel32 ،-luser32 ،-ladvapi32 و هر کتابخانهٔ پیش‌فرضی هستند که توسط کامپایلر پس‌زمینه استفاده می‌شود. گزینهٔ -mwindows همان‌طور که در بالا شرح داده شد، فهرست کتابخانه‌های پیش‌فرض را افزایش می‌دهد.
هنگام پیوند دادن، کتابخانهٔ winecrt0 را اضافه نمی‌کند.
گزینه‌ای را به winebuild ارسال می‌کند. اگر option شامل کاما باشد، در محل کاماها به چندین گزینه تقسیم می‌شود.
هنگام پیوند دادن یک dll، کتابخانهٔ واردات (import library) متناظر با آن را نیز ایجاد می‌کند.

مسیر و نام فایل باینری winebuild را که به‌طور خودکار توسط winegcc راه‌اندازی می‌شود مشخص می‌کند. اگر تنظیم نشده باشد، winegcc در متغیر PATH به دنبال فایلی به نام winebuild خواهد گشت.

دستور winegcc شناسهٔ __WINE__ را برای کدهایی تعریف می‌کند که باید بدانند چه زمانی تحت Wine کامپایل می‌شوند. همچنین برای سازگاری با MinGW، شناسه‌های WIN32 ،_WIN32 ،__WIN32 ،__WIN32__ ،__WINNT و __WINNT__ را تعریف می‌کند.

در حال حاضر ویژگی‌های dllimport/dllexport به دلیل عدم پشتیبانی از این قابلیت‌ها در نسخهٔ ELF نرم‌افزار gcc پشتیبانی نمی‌شوند.

پیوند ایستا (Static linking) در حال حاضر در برابر DLLهای Wine پشتیبانی نمی‌شود. در نتیجه، گزینه‌های -static ،--static و -Wl,-static خطایی ایجاد خواهند کرد.

باگ‌ها را می‌توان در سامانه ردیابی باگ Wine گزارش کرد.

winegcc توسط Dimitrie O. Paun نوشته شده است.

winegcc بخشی از توزیع Wine است که از طریق WineHQ، مقر توسعه Wine در دسترس است.

gcc(1), winebuild(1), wrc(1), wine(1),
مستندات و پشتیبانی Wine.

October 2005 Wine 11.17