MSYS2
MSYS2, mingw-w64 tabanlı Windows için popüler bir derleme (build) sistemidir ve hem gcc hem de clang derleyicilerini içerir. MSYS2, pacman (arch-linux'tan bir port) adında bir paket yöneticisi kullanır ve yaklaşık 2000 önceden derlenmiş mingw-paketine sahiptir. MSYS2, bağımsız yazılımlar oluşturmak için tasarlanmıştır: mingw-w64 derleyicileri ile oluşturulan ikili dosyalar (binaries), MSYS2'ye bağlı değildir[^1].
MSYS2'de curl ve libcurl edinin
mingw-w64-curl paketi hakkında güncel bilgiler msys2 web sitesinde bulunabilir: https://packages.msys2.org/base/mingw-w64-curl. Burada ayrıca çeşitli mevcut çeşitler için kurulum talimatlarını da bulabiliriz. Örneğin curl için varsayılan x64 ikili dosyasını kurmak için şunu çalıştırırız:
pacman -Sy mingw-w64-x86_64-curl
Bu paket, hem curl komut satırı aracını hem de libcurl başlıklarını ve paylaşılan kütüphanelerini içerir. Varsayılan curl paketleri OpenSSL arka ucu ile oluşturulmuştur ve bu nedenle mingw-w64-x86_64-openssle bağlıdır. Ayrıca mingw-w64-x86_64-curl-gnutls ve mingw-w64-x86_64-curl-gnutls paketleri de vardır, daha fazla ayrıntı için msys2 web sitesine bakın.
Tıpkı Linux'ta olduğu gibi, libcurl'e karşı derleme yapmak için gereken bayrakları (flags) sorgulamak için pkg-config kullanabiliriz. mingw64 kabuğunu (shell) kullanarak msys2'yi başlatın (bu, /mingw64'ü dahil edecek yolu otomatik olarak ayarlar) ve çalıştırın:
pkg-config --cflags libcurl
# -IC:/msys64/mingw64/include
pkg-config --libs libcurl
# -LC:/msys64/mingw64/lib -lcurl
pacman paket yöneticisi önceden derlenmiş ikili dosyaları kurar. Sırada, örneğin yapılandırmayı özelleştirmek için curl'ü yerel olarak derlemek amacıyla pacman'i nasıl kullanacağımızı açıklıyoruz.
MSYS2 üzerinde libcurl derleme
Pacman ile paket oluşturmak neredeyse kurulum kadar basittir. Tüm süreç, mingw-w64-curl paketinden PKGBUILD dosyasında yer almaktadır. Paketi kendimiz yeniden oluşturmak için dosyayı kolayca değiştirebiliriz.
Temiz bir msys2 kurulumuyla başlarsak, önce autoconf, patch ve git gibi bazı derleme araçlarını kurmak isteriz. msys2 kabuğunu başlatın ve çalıştırın:
# Depoları senkronize edin (Sync the repositories)
pacman -Syu
# git, autoconf, patch, vb. kurun
pacman -S git base-devel
# x86_64 için GCC kurun
pacman -S mingw-w64-x86_64-toolchain
Şimdi mingw-packages deposunu klonlayın ve mingw-w64-curl paketine gidin:
git clone https://github.com/msys2/MINGW-packages
cd MINGW-packages/mingw-w64-curl
Bu dizin, curl'ü oluşturmak için kullanılan PKGBUILD dosyasını ve yamaları içerir. Neler olup bittiğini görmek için PKGBUILD dosyasına bir göz atın. Şimdi derlemek için şunları yapabiliriz:
makepkg-mingw --syncdeps --skippgpcheck
İşte bu kadar. --syncdeps parametresı, mingw-w64-curl bağımlılıklarını henüz kurulu değilse otomatik olarak kontrol eder ve kurulmasını ister. İşlem tamamlandığında, geçerli dizinde 3 yeni dosyanız olur, örneğin:
pacman -U mingw-w64-x86_64-curl-7.80.0-1-any.pkg.tar.zstpacman -U mingw-w64-x86_64-curl-gnutls-7.80.0-1-any.pkg.tar.zstpacman -U mingw-w64-x86_64-curl-winssl-7.80.0-1-any.pkg.tar.zst
Böyle bir yerel paket dosyasını kurmak için pacman -u komutunu kullanın:
pacman -U mingw-w64-x86_64-curl-winssl-7.80.0-1-any.pkg.tar.zst
pacman ve msys2 ile derleme hakkında daha fazla bilgi edinmek için msys2 belgelerine bir göz atın veya gitter'a katılın.
[^1]: mingw-w64-curl mingw-paketi ile curl ve curl-devel msys-paketlerini karıştırmamaya dikkat edin. İkincisi, msys2 ortamının kendisinin bir parçasıdır (örneğin pacman indirmelerini desteklemek için), ancak yeniden dağıtım için uygun değildir. MSYS2'ye bağlı olmayan yeniden dağıtılabilir yazılımlar oluşturmak için her zaman mingw-w64-… paketlerine ve araç zincirlerine ihtiyacınız vardır.