D.3.3. Cygwin’e Karşı Windows Ortamı
Önceki kısımda oluşan yürütülebilir kod dosyalarını Cygwin’in
cygcheck komutu ile kontrol ettiğimizde:
$ cygcheck ./winguiW.exe
…\winguiW.exe
C:\WINDOWS\system32\GDI32.dll
C:\WINDOWS\system32\ntdll.dll
C:\WINDOWS\system32\win32u.dll
C:\WINDOWS\system32\KERNEL32.dll
C:\WINDOWS\system32\KERNELBASE.dll
C:\WINDOWS\system32\msvcrt.dll
C:\WINDOWS\system32\USER32.dll
$ cygcheck ./winguiC.exe
…\winguiC.exe
C:\cygwin64\bin\cygwin1.dll
C:\WINDOWS\system32\KERNEL32.dll
C:\WINDOWS\system32\ntdll.dll
C:\WINDOWS\system32\KERNELBASE.dll
C:\WINDOWS\system32\GDI32.dll
C:\WINDOWS\system32\win32u.dll
C:\WINDOWS\system32\USER32.dll
winguiW.exe dosyasının
msvcrt, gdi32, kernel32, kernelbase,
ntdll, user32 ve win32u isimli devingen kütüphanelerine;
winguiC.exe dosyasının ise
cygwin1, gdi32, kernel32, kernelbase,
ntdll, user32 ve win32u isimli devingen kütüphanelerine
bağımlı olduğunu görüyoruz. Burada cygwin1.dll dışındaki
tüm kütüphanelerin Windows tarafından sağlandığına dikkat edin. Bu yüzden,
eğer winguiC.exe yürütülebilir dosyası, Cygwin’in
kurulu olmadığı bir sistemde çalıştırılacaksa, bu kütüphanenin de o sisteme
kopyalanması gerekmektedir. Diğer yandan winguiW.exe için
böyle bir şeye gerek yoktur.
Ancak, iki derleme yöntemi arasındaki tek fark bu değildir. gcc
ile derleme yapıldığında, oluşacak program işletim sistemi ile
cygwin1.dll üzerinden iletişime geçtiği için, dosya isimlerinde
kullanılan sistem Cygwin (yani unix-benzeri sistem) uyumluluğu gösterir:
Dosya yollarında ayırıcı olarak \ yerine /
kullanılır; örneğin C: sürücü ismi yerine /cygdrive/c
kullanılır vs. Derleme için x86_64-w64-mingw32-gcc kullanıldığında
ise, normal Windows programı üretilir ve dosya isimleri Windows standardına
uygun olur. Diğer bir deyişle, üreteceğiniz program (unix-benzeri
sistem uyumluluğu sağlanan) Cygwin ortamında kullanılacaksa,
gcc derleyicisini; saf Windows ortamında kullanılacaksa,
x86_64-w64-mingw32-gcc derleyicisini kullanmanız önerilir.