Кіріспе

Microsoft Windows-та қолданбаларды жасауға арналған тегін және ашық кодты бағдарламалық қамтамасыз ету. MinGW ("Minimalist GNU for Windows"), бұрынғы mingw32 – Microsoft Windows қолданбаларын құруға арналған тегін және ашық кодты бағдарламалық қамтамасыз ету ортасы. MinGW құрамына GNU Compiler Collection (GCC) порты, Windows үшін GNU Binutils (ассемблер, байланыстырғыш, архив басқарушысы), Windows API-ді пайдалануға мүмкіндік беретін тегін таратылатын Windows-қа тән бас файлдар мен статикалық импорт кітапханалары, GNU жобасының GNU Debugger-інің Windows үшін жасалған нұсқасы және түрлі қосымша құралдар кіреді. MinGW үшінші тараптың C орындалу уақыты динамикалық кітапханаларына (DLL) тәуелді емес, ал орындалу уақыты кітапханалары GNU General Public License (GPL) лицензиясы бойынша таралмайды, сондықтан бағдарламаның басқа бөлігінде GPL кітапханасы қолданылмаса, жасалған бағдарламалармен бірге бастапқы кодты тарату қажет емес. MinGW-ді түпнұсқа Microsoft Windows платформасында, Linux (немесе басқа Unix) жүйелерінде немесе Cygwin-де «жергілікті» режимде іске асыруға болады. MinGW арқылы жасалған бағдарламалар 32 биттік орындалатын файлдар болғанымен, оларды Windows-тың 32 және 64 биттік нұсқаларында пайдалануға болады. MinGW жобасының дамуы 2005–2008 жылдары Mingw w64 деп аталатын балама жобаның құрылуымен жалғасты.

Тарих

MinGW бастапқыда mingw32 ("W32 үшін минималистік GNU") деп аталды, бұл GNU конвенциясына сәйкес Windows "W32" деп қысқартылады. Сандар 32 биттік бинарлық файлдарды ғана шығаратындай түйсік тудырмау үшін алынып тасталды. Колин Петерс 1998 жылы алғашқы нұсқауды шығарды, ол тек GCC-нің Cygwin портынан тұрды. MSYS ("Minimal System" сөзінің қысқартылуы) Windows-тың түпнұсқа бағдарламалық қамтамасымен жақсырақ үйлесімділікті қамтамасыз ету мақсатында Bourne shell командалық жол интерпретаторы ретінде енгізілді. 2018 жылы SourceForge-пен пошта тізімдерін басқару мәселесі бойынша келіспеушіліктер туындағаннан кейін MinGW OSDN-ге көшірілді.

Шеңбер

2007 жылы бастапқы MinGW-нің 64-бит пен жаңа API-лерді қолдау мақсатында жасалған Mingw w64 тармағы пайда болды. Одан бері ол кеңінен қолданылып, таратылуда. MSYS2 ("минималды жүйе 2") – Mingw w64 және Cygwin негізінде құрылған Microsoft Windows үшін бағдарламалық қамтамасты тарату және әзірлеу платформасы, ол Unix әлемінен кодты Windows жүйесіне орнатуға көмектеседі.

Бағдарламалау тілдерін қолдау

GCC қолдайтын көптеген тілдер MinGW портында да қолжетімді. Оларға C, C++, Objective C, Objective C++, Fortran және Ada кіреді. GCC орындалу уақыты кітапханалары пайдаланылады (C++ үшін libstdc++, Fortran үшін libgfortran және т.б.). MinGW әдепкі бойынша Windows операциялық жүйесінің компонент кітапханасы MSVCRT-ге сілтеме жасайды, бұл Visual C++ 6.0 нұсқасы байланыстырған C кітапханасы (бастапқы мақсат CRTDLL болған), ол 1998 жылы шығарылды және сондықтан C99 мүмкіндіктерін, тіпті C89 стандартын да толық қолдамайды. MSVCRT-ге бағытталған бағдарламаларға қосымша орындалу уақытында қайта таратылатын компоненттерді орнату қажет болмайды, бірақ C99 стандартын қолдамау, әсіресе printf форматындағы түрлендіру спецификаторларына байланысты, порттау мәселелерін тудырады. Бұл мәселелер C99 үйлесімділік кітапханасы libmingwex арқылы ішінара шешілді, бірақ қажетті кең көлемді жұмыс әлі де толыққанды аяқталған жоқ және толығымен жүзеге аспауы мүмкін. Mingw w64 бұл мәселелерді шешіп, толық POSIX стандартына сәйкес printf функционалдығын ұсынады.

Байланыс үйлесімділігі

Әр түрлі C++ компиляторларымен (мысалы, MinGW және Visual Studio) жасалған бинарлық файлдар (атқару файлдары немесе DLL) көбінесе байланысқа үйлесімсіз болады. Дегенмен, компиляцияланған C коды байланысқа үйлесімді.

Құралымдары

MinGW жобасы әртүрлі негізгі компоненттер мен қосымша пакеттерді күзеп, таратуды жүзеге асырады, соның ішінде GCC және binutils сияқты GNU құралдар тізбегінің әртүрлі порттарын, оларды эквивалентті пакеттерге аудастырады. Бұл құралдарды Windows командалық жолынан немесе IDE-ге интеграциялауға болады. Пакеттерді mingw get арқылы командалық жол арқылы орнатуға болады. MinGW <name>.lib және <name>.dll конвенцияларына сәйкес динамикалық кітапханаларды, сондай-ақ Unix және Unix-қа ұқсас жүйелерде кең таралған lib<name>.a атау конвенциясын қолдайды. Бұған қоса, MinGW компоненті MSYS (минималды жүйе) ретінде белгілі, ол rxvt және POSIX құралдарының таңдауын қамтитын, жеңіл Unix-қа ұқсас қабықша ортасының Windows порттарын ұсынады, бұл autoconf скрипттерін іске қосуға жеткілікті, бірақ ол C компиляторын немесе жазу регистрін ескеретін файлдық жүйені қамтамасыз етпейді. mingwPORTs – MinGW бағдарламалық жинағына пайдаланушылар қосылған қосымшалар. Бұл "қосымшалар" алдын ала компиляцияланған екілік пакеттер түрінде емес, интерактивті Bourne shell скрипттері түрінде ұсынылады, олар соңғы пайдаланушыны бастапқы кодты автоматты түрде жүктеу және түзету процесі арқылы жетелейді, содан кейін оны құрастырып, орнатады. MingwPORT-тан кез келген қолданбаны құрастыруды көздейтін пайдаланушылар алдымен MinGW және MSYS-ті орнатуы керек. Windows жүйелік қабықшалары мен статикалық импорт кітапханаларының іске асырылуы рұқсаттамалық лицензия бойынша шығарылады, ал GNU порттары GNU General Public License бойынша ұсынылады. Толық MSYS пакетінің және жеке MinGW GNU құралдарының екілік жүктемелері MinGW сайтынан қол жетімді.

Cygwin-пен салыстыру

Cygwin және MinGW екеуі де Unix бағдарламалық жасақтамасын Windows-қа көшіру үшін қолданылса да, олардың әртүрлі тәсілдері бар: Cygwin барлық негізгі Unix жүйелік шақырулары мен кітапханаларын толыққанды іске асыратын толық POSIX қабатын ұсынуға бағытталған. Ол өнімділіктен гөрі үйлесімділікті жоғары басымдық деп санайды. Ал MinGW қарапайымдық пен өнімділікке басымдық береді. Сондықтан ол Windows API-ді пайдаланып оңай іске асырылмаған кейбір POSIX API-лерін, мысалы fork, mmap және ioctl ұсынбайды. MinGW-ге көшірілген SDL, wxWidgets, Qt немесе GTK сияқты кросс-платформалық кітапхананы пайдаланып жазылған бағдарламалар әдетте MinGW-де Cygwin-дегідей оңай құрастырылады. Cygwin-мен жазылған Windows бағдарламалары, егер статикалық байланыс болмаса, бағдарламамен бірге таратылуы тиіс copylefted үйлесімділік DLL-де жұмыс істейді. Динамикалық байланыс болса, бағдарлама Cygwin көзін қайдан алуға болатыны туралы ақпаратты да беруі керек. MinGW үйлесімділік қабатын қажет етпейді, себебі MinGW-ге негізделген бағдарламалар Windows API-ге тікелей шақырулармен құрастырылады. MinGW және MSYS комбинациясы кішкентай, дербес ортаны ұсынады, оны тіркелімге немесе компьютерде файлдарды қалдырмай, алынбалы медиада жүктеуге болады. POSIX жүйелерінде MinGW GCC арқылы Windows бағдарламаларын кросс-компиляциялау да мүмкін. Бұл әзірлеушілерге Windows-та Cygwin-мен немесе одан тыс Windows-та жұмыс істейтін бағдарламалық жасақтаманы құрастыру үшін MSYS-пен Windows-ты орнатудың қажеті жоқ екенін білдіреді.