Środowisko: Linux pod Windows – MSYS2, MinGW i gcc

Minimalne środowisko linuxowe pod Windows oparte na MSYS2 i MinGW64: instalacja gcc, biblioteki GMP oraz ImageMagick wraz z przykładową kompilacją programu w C.

Środowisko: Linux pod Windows – MSYS2, MinGW i gcc

Pierwsze co warto zrobić w Windowsie, to zainstalować w nim Linuxa. Poniżej opisuję minimalną konfigurację opartą o MSYS2.

MSYS2 to środowisko z narzędziami linuxowymi na Windowsie. Nazwa pochodzi od „Minimal SYStem”, generacja 2.

MSYS2 jest oparte o MinGW, czyli zestaw narzędzi GNU dla Windowsa. Nazwa MinGW oznacza „Minimalist GNU for Windows”.

GNU to projekt dostarczający wolne narzędzia systemowe używane w systemach linuxowych, w tym kompilator gcc dla języka C.

MSYS2 używam jako źródła podstawowych narzędzi linuxowych na Windowsie. Chodzi głównie o linuxowy terminal z powłoką bash oraz kompilator gcc, a przy okazji edytor nano i inne narzędzia linuxowe, jak ImageMagick.

W ten sposób mam mini-Linux pod Windows: środowisko MSYS2, narzędzia MinGW i kompilator gcc. Do instalacji pakietów w MSYS2 korzystam z menedżera pakietów pacman.

Instalacja i konfiguracja MSYS2

Instaluję go stąd: https://www.msys2.org/

Po zainstalowaniu pojawiają się trzy elementy (rys. 1).

Plik: hello.c.

MSYS2 po instalacji Rys. 1. Wynik instalacji MSYS2: MSYS, MINGW64, UCRT64.

MSYS służy głównie do zarządzania pakietami. MINGW64 i UCRT64 pozwalają budować natywne pliki .exe dla Windowsa. Korzystam z MINGW64, bo jest prostsze od UCRT64 i wystarczające.

Instalacja kompilatora gcc

Uruchamiamy MSYS2 MINGW64 i doinstalowuję kompilator:

1
pacman -S --needed mingw-w64-x86_64-gcc

Sprawdzam wynik instalacji:

1
gcc --version

Do zabawy dużymi liczbami potrzebuję jeszcze bibliotekę GMP. Instaluję ją w MSYS2 MINGW64:

1
pacman -S --needed mingw-w64-x86_64-gmp

GMP to GNU Multiple Precision Arithmetic Library, czyli biblioteka C do obliczeń na liczbach o dowolnej precyzji, większych niż pozwalają na to standardowe typy w C.

Testuję. Tworzę katalog c:/code. W terminalu MINGW64 przechodzę do tego katalogu, tworzę plik hello.c, kompiluję i uruchamiam:

1
2
cd /c/code
nano hello.c
1
2
3
4
5
6
7
#include <stdio.h>

int main(void)
{
    printf("Hello, world!\n");
    return 0;
}
1
2
gcc hello.c -o hello
./hello

Plik: hello.c.

Instalacja ImageMagick

Instalacja ImageMagick w środowisku MSYS2 MINGW64.

Aktualizacja pakietów (jeśli dawno nie była wykonywana):

1
pacman -Syu

Instalacja pakietu:

1
pacman -S mingw-w64-x86_64-imagemagick

Sprawdzenie instalacji:

1
magick -version

Przykładowe użycie:

1
magick input.png -gravity center -crop 1:1 -resize 512x512 output.png

Przykład jak zrobić screenshota do umieszczenia w dokumentacji README.md na GitHubie:

1) Otwórz stronę w Chrome, następnie:

  • F12 → DevTools
  • Ctrl+Shift+P (Command Menu)
  • Wpisz: screenshot
  • Wybierz: Capture full size screenshot

Chrome wygeneruje PNG z pełną wysokością strony.

2) Użyj magicka do zrobienia obramowania i cienia:

1
magick screenshot-raw.png   -resize 500x   -bordercolor white -border 10   -alpha set   \( +clone -background black -shadow 40x3+0+2 \)   +swap -background none -compose over -composite   -strip -quality 92   screenshot.png

Podsumowanie

Minimalne środowisko z narzędziami unixowymi do pracy pod Windows:

  • MSYS2 (powłoka bash + manager pakietów pacman)
  • zestaw narzędzi (toolchain) MinGW64
  • kompilator gcc
  • edytor nano
  • biblioteka GMP
  • ImageMagick

Na początek to wystarczy.

© Marcin Szewczyk. Wszelkie prawa zastrzeżone.