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.