Mingw-w64
Mingw-w64 یک محیط توسعه نرم افزار منبع باز و رایگان برای ایجاد برنامه های کاربردی Microsoft Windows PE است. توسعه نرم افزار در 2005-2010 از MinGW این بود(مینیمالیستی برای gnu ویندوز).
Mingw-w64 شامل یک پورت از مجموعه کامپایلر گنو (GCC)، GNU Binutils برای ویندوز ( اسمبلر ، پیوند دهنده ، مدیر بایگانی )، مجموعهای از فایلهای هدر ویژه ویندوز با قابلیت توزیع آزادانه و کتابخانههای وارداتی استاتیک است که استفاده از API ویندوز را امکانپذیر میسازد. یک ساخت داخلی ویندوز از گنو دیباگر و پروژه گنو و ابزارهای مختلف.
Mingw-w64 را می توان بر روی پلتفرم اصلی مایکروسافت ویندوز، میزبانی متقابل روی لینوکس (یا سیستم عامل یونیکس دیگر)، یا "cross-native" در MSYS2 یا Cygwin اجرا کرد . Mingw-w64 می تواند فایل های اجرایی 32 بیتی و 64 بیتی را برای x86 تحت نام های هدف
i686-w64-mingw32
و
x86_64-w64-mingw32
.
تاریخ[ویرایش]
در سال 2005، Mingw-w64 توسط OneVision Software تحت اصول طراحی اتاق تمیز(clean room) ایجاد شد، زیرا پروژه اصلی MinGW برای به روز رسانی پایه کد خود، از جمله گنجاندن چندین API جدید کلیدی و پشتیبانی 64 بیتی بسیار مورد نیاز بود. سپس در سال 2008، OneVision کد را به Kai Tietz، یکی از توسعه دهندگان اصلی خود، به شرطی که منبع باز (open source) باقی بماند، اهدا کرد. [۱] ابتدا به پروژه اصلی MinGW ارسال شد، اما به دلیل سوء ظن استفاده از اطلاعات غیر عمومی یا اختصاصی از آن خودداری کرد. [۲] [۳] [۴] به دلایل بسیاری، توسعهدهنده اصلی و یکی از بنیانگذاران پروژه MinGW-w64، کای تیتز، تصمیم گرفت همکاری خود را با MinGW ادامه ندهد . [۵]
MinGW-w64 پیاده سازی Win32 API کامل تری را ارائه می دهد، [۶] از جمله موارد زیر :
- پشتیبانی بهتر از C99
- از POSIX Threads (pthreads) پشتیبانی می کند (از جمله امکان فعال کردن عملکردهای مرتبط با رشته C++11 در libstdc++ GCC)
- GCC multilib که به کاربران اجازه می دهد کتابخانه های 32 بیتی و 64 بیتی را به صورت موازی نصب کنند
- نقطه ورود یونیکد (wmain/wWinMain)
- DDK (از ReactOS )
- DirectX (از Wine )
- پشتیبانی از فایل های بزرگ
- پشتیبانی از Win64
- سیستم های انتقال مواد ساخت یافته استثنا (SEH) به جای کوتولگی یا sjlj در اکس86-64 (از شورای همکاری خلیج فارس 4.8+)
- برخی از ابزارهای مفید مانند
gendef
(نسخه بهبود یافتهpexports
MinGW) وwidl
( کامپایلر MIDL از Wine).
علاوه بر این، پروژه Mingw-w64 winpthreads را حفظ میکند، یک کتابخانه wrapper شبیه pthreads-win32، با این تفاوت اصلی که به GCC اجازه میدهد از آن به عنوان یک کتابخانه <thread>
، <future>
و <mutex>
.
MSYS2[ویرایش]
MSYS2 ("مینیال سیستم 2") یک توزیع نرم افزار و یک پلت فرم توسعه برای مایکروسافت ویندوز است که بر اساس Mingw-w64 و Cygwin است که به استقرار کد از دنیای یونیکس در ویندوز کمک می کند. این همان نقش MSYS قدیمی را در MinGW بازی می کند. [۷]
MSYS2 با چندین پروژه دیگر، از جمله Cygwin و Windows Subsystem for Linux (WSL) این هدف را به اشتراک می گذارد. WSL با پشتیبانی محدود از فراخوانی هسته و محدودیت های قابل توجه در برنامه های گرافیکی، باینری های لینوکس ELF را بر روی ویندوز اجرا می کند. Cygwin یک محیط کامل POSIX (به عنوان یک DLL ویندوز) فراهم می کند که در آن برنامه های کاربردی که به صورت EXE ویندوز کامپایل شده اند، همانطور که در یونیکس اجرا می شوند اجرا می شوند. [۸]
به جای ارائه یک محیط کامل مانند Cygwin، MSYS2 وظیفه خود را به عنوان یک پلت فرم توسعه و استقرار می دهد. [۹]
- یک محیط اصلی MSYS2 (مشابه و در واقع برگرفته از کد شبیه سازی Cygwin) با مدیر بسته و ابزار استاندارد سیستم یونیکس وجود دارد. به این ترتیب، هنگام مدیریت خود MSYS2، ابزارهای استاندارد یونیکس را می توان بدون تغییر با استفاده از محیط شبیه سازی شده استفاده کرد. همچنین میتوان ابزارهای ساخت را در محیط شبیهسازی شده MSYS2 نصب کرد، در صورتی که کاربر بخواهد به جای API اصلی، نرمافزاری بسازد که به لایه شبیهسازی POSIX بستگی دارد.
- علاوه بر این، چهار محیط شامل کامپایلرهای بومی، ابزارهای ساخت و کتابخانه هایی ارائه شده است که می توانند مستقیماً برای ساختن برنامه های بومی ویندوز 32 یا 64 بیتی استفاده شوند. برنامه های نهایی ساخته شده با دو محیط بومی از هیچ نوع شبیه سازی استفاده نمی کنند و می توانند مانند برنامه های بومی ویندوز اجرا یا توزیع شوند. محیطها MINGW64 و MINGW32 (محیطهای اصلی MinGW-w64 با استفاده از gcc، msvcrt و libstdc++)، UCRT64 (انطباق MINGW64 با ucrt) و CLANG64 (انطباق UCRT64 با clang و libc++) هستند. در حالی که Cygwin همچنین کامپایلرها و کتابخانه های MinGW-w64 را ارائه می دهد، مجموعه کتابخانه های موجود کوچکتر است و به دلیل قرار نگرفتن در پیشوندهای جداگانه، به راحتی مدیریت نمی شوند.
محیط اصلی MSYS2 یک مدیر بسته ( Pacman از Arch Linux )، یک پوسته bash و سایر برنامه های یونیکس را ارائه می دهد. از یک کتابخانه زمان اجرا msys-2.0.dll (~20 مگابایت) استفاده می کند که از کتابخانه Cygwin cygwin1.dll مشتق شده است و به طور منظم برای پیگیری توسعه Cygwin به روز می شود. این به عنوان یک محیط توسعه در نظر گرفته شده است، محیطی که توسعه دهندگان می توانند آن را مدیریت کنند (با استفاده از Pacman) و ابزارهای خود را با آن اجرا کنند. ویژگی هایی که برای توسعه غیر ضروری ارزیابی می شوند حذف می شوند. [۹]
همانند Cygwin، MSYS2 از ترجمه مسیر برای نرم افزار غیر MSYS2 که از آن راه اندازی شده است، پشتیبانی می کند. برای مثال میتوان از دستور
notepad++ /c/Users/John/file.txt
برای راهاندازی ویرایشگری استفاده کرد که فایل را با مسیر Windows
C:\Users\John\file.txt
MSYS2 و محیط bash آن توسط Git و GNU Octave برای توزیع رسمی ویندوز خود استفاده می شود.
کامپایلر[ویرایش]
اکثر زبان های پشتیبانی شده توسط GCC در پورت Mingw-w64 نیز پشتیبانی می شوند. اینها عبارتند از C، C++ ، Objective-C ، Objective-C++، Fortran و Ada . از کتابخانه های زمان اجرا GCC استفاده می شود (libstdc++ برای C++، libgfortran برای Fortran و غیره. ). بسته بندی LLVM 's clang به mingw-w64 نیز توسط MSYS2 ارائه شده است. از ARM برای ویندوز (
aarch64-w64-mingw32
و
armv7-w64-mingw32
باینری ها (قابل اجرا یا DLL) تولید شده با کامپایلرهای C++ مختلف (مانند Mingw-w64 GCC و Visual Studio) به دلیل استفاده از ABI های مختلف و طرح های مخدوش نام ناشی از تفاوت در زمان اجرا C++ به طور کلی با پیوند سازگار نیستند. با این حال، کد C کامپایل شده با پیوند سازگار است. [۱۳] Clang یک استثنا است، زیرا بیشتر از C++ ABI MSVC در ویندوز پشتیبانی می کند. [۱۴]
مستندات binutils اطلاعات به روزی در مورد نحوه کار با فرمت های مختلف ویندوز و ابزارهای ویژه برای انجام این کار دارد. [۱۵] [۱۶]
منابع[ویرایش]
- ↑ "(MinGW-w64) History". MinGW-w64 Wiki. Retrieved 2016-02-18.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "Re: Sub project for w64 header & crt". Web link.
- ↑ "(MinGW-w64) History". MinGW-w64 Wiki. Retrieved 2016-02-18.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "Re: Harmonizing mingwrt / w32api with mingw-w64". http://sourceforge.net/p/mingw/mailman/message/23100595/.
- ↑ "Re: Harmonizing mingwrt / w32api with mingw-w64". http://sourceforge.net/p/mingw/mailman/message/23108552/.
- ↑ "MinGW-w64". MinGW-w64.org. Retrieved 30 May 2013.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ MSYS2: official homepage, code repository
- ↑ "ZSH on Windows via MSYS2". 26 July 2018.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ ۹٫۰ ۹٫۱ ۹٫۲ "How does MSYS2 differ from Cygwin · msys2/Msys2 Wiki".صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ Example taken from the overview article https://www.booleanworld.com/get-unix-linux-environment-windows-msys2
- ↑ "Package: mingw-w64-x86_64-clang". MSYS2 Packages. Retrieved 12 February 2020.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ Storsjö, Martin (23 April 2020). "mstorsjo/llvm-mingw".صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ http://mingw.org/wiki/Interoperability_of_Libraries_Created_by_Different_Compiler_Brands
- ↑ "MSVC compatibility". Clang 11 documentation.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "ld: win32". sourceware.org.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "GNU Binary Utilities Documentation". sourceware.org.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
لینک های خارجی[ویرایش]
- MSYS2
- MXE - ساخت فایلها برای ساخت MinGW بر روی یونیکس و بسیاری از کتابخانههای وابستگی رایج با هدف قرار دادن Win32/64، بستههای از پیش ساخته شده در دسترس
This article "Mingw-w64" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:Mingw-w64. Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.