Bir süredir sadece Linux için 64 bit Flash mümkündü. Ama şimdi Windows ve Mac için de var. 64 bit Flash Player'ı çıkarmak neden bu kadar uzun sürdü çok merak ediyorum. Gerçekten çok uzun sürdü.Ve hala deneme aşamasında. Nihai sürümün çıkması biraz daha zaman alacak.
64 bit Windows ile hem 32 bit hem de 64 bit Internet Explorer geliyor, aşağıdaki resimde görüldüğü gibi.
Eğer Firefox yüklemek isterseniz o da 32 bit geliyor. Windows için henüz kararlı nihai sürüm 64 bit Firefox yok. Aşağıdaki resimde 64 bit Windows 7 üzerine kurulmuş bir Firefox'un 32 bit olduğu görülüyor.
Dolayısıyla 64 bit Windows bile kullanıyor olsanız, Firefox'un gördüğü Flash plugin'iniz 32 bit olacak.Bunu Firefox adres satırına about:plugins yazarak da görebilirsiniz.
Yukarıdaki resimde Shockwave Flash plugin'inin kullandığı NPSWF32.dll dosyasının isminden 32 bit olduğu belli. Dolayısıyla Firefox'un gördüğü Flash Player da 32 bit. Version satırındaki 64 sayısı sizi yanıltmasın; o başka.
Şu adresten 64 bit IE için 64 bit Flash Player'i indirelim ve olacakları görelim. Aşağıdaki resimde de 64 bit Windows 7 üzerinde, 64 bit IE8'de çalışan Flash Player'in görüntüsü var. Görev Yöneticisi'nde iexplore.exe'nin yanında *32 olmadığı için 64 bit olduğu açık. Ayrıca FlashUtil64_10_3_162_ActiveX.exe'nin yanında da *32 olmadığından bu eklentinin çalışan proses'i de 64 bit. Ayrıca IE'nin Araçlar>Internet Seçenekleri>Programlar>Eklentileri Yönet>Araç Çubukları ve Uzantılar'da görünen Flash'ın Shockwave Flash Object'in ek bilgilerinde %systemroot%\System32\Macromed\flash klasöründeki Flash64_10_3_162.ocx dosyasının da 64 bit olduğu gözüküyor (sadece dosya adında geçen 64 ibaresinden).
Peki bundan nasıl emin olabiliriz? Visual Studio ile gelen dumpbin adında bir komut satırı aracı var. Bu iş için dumpbin önerilmiş. Üşenmedim, Windows 7 üzerine Visual Studio 2010 Express'i kurdum, Visual Studio Command Prompt'u çalıştırdım (cmd.exe ile olmuyor). Burada aşağıdaki sonuçları elde ettim:
Burada machine (x64) yazan dosyalar 64 bit mimariye göre derlenmiş dosyalar. machine (x86) yazanlarsa 32 bit mimariye göre derlenmiş olanlar. Dumpbin'in çıktısı çok ayrıntılı olduğu için findstr ile filtrelenmiş. Bu filtreyi kaldırınca ayrıca adreslenebilir bellek alanının da 64 bit dosyalar için 2 GB'ın üzerinde olduğuna dair bir ibare de çıkıyor ki bu da beklenen birşey. Unutmadan söyleyeyim, 64 bit Windows üzerinde Program Files klasörü sadece 64 bit uygulamalar için. Geriye dönük uyumluluk açısından 32 bit uygulamalar Program Files (x86) klasörüne kuruluyor. Ayrıca Windows klasörünün altındaki system32 klasörü, her ne kadar adında 32 geçse de artık 64 bit sistem dosyaları için. 32 bit sistem dosysalarının konumu SysWOW64.
64 bit Windows kullanırken 32 bit Firefox'a mı muhtacız? Henüz Firefox'un kararlı bir 64 bit sürümü yok demiştim. Ama deneme sürümlerini denemek isterseniz şu adresten indirebilirsiniz. Hemen onu da indirip kurdum ki Flash Square'i 64 bit Firefox üzerinde deneyebileyim. Firefox'un 64 bit sürümünün adı Firefox değil, Namoraka. Görünüş aynı, hatta exe dosyası bile firefox.exe. Sadece proje adını değiştirmişler, kararlı ve deneme sürümleri karışmasın diye. İşte aşağıda 64 bit Windows 7 üzerine kurulmuş 64 bit Firefox (yani Namoraka) içinde çalışan 64 bit Flash Square plugin'i gözüküyor.
Burada görülen NPSWF64_10_3_162.dll dosyası isminden 64 bit olduğu çağrışımını yapıyor. Peki gerçekten öyle mi diye bakmak için %systemroot%\system32\Macromed\Flash klasörünün altında bulunan bu dosyanın başlıklarını dumpbin ile inceleyelim:
Aklıma gelmişken, bir uygulamanın 32 bit mi yoksa 64 bit mi olduğunu linux'ta bulmak için file komutunu kullanabiliyormuşuz. Bu komutu bir dosyayı göstererek, ya da çalışan bir prosesin ID'sini vererek de kullanabiliyoruz. Örneğin, Ubuntu 10.10 x64 üzerinde çalışan Firefox'un gerçekten 64 bit olduğunu görmek için şunlaır yaptım:
$ file /usr/lib/firefox-3.6.10/firefox-bin
/usr/lib/firefox-3.6.10/firefox-bin: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped
yada proses ID'sini vererek:
$ file -L /proc/1515/exe
/proc/1515/exe: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped
Firefox'un adres satırına about:plugins yazdığımda Flash Player ile ilgili dosyanın npwrapper.libflashplayer.so olduğunu gördüm. Bu dosyayı arattığımda /var/lib/flashplugin-installer/ ve /usr/share/ubufox/plugins/ klasörlerinin altında rastladım. Fakat ikincisi bozuk bir sembolik linkti. Aslen /usr/lib/flashplugin-installer/npwrapper-libflashplayer.so'ya işaret ediyor olsa da böyle bir dosya yoktu. Onun yerine libflashplayer.so adlı bir dosya buldum. file komutu ile bunları incelediğimde ise
$ file /var/lib/flashplugin-installer/npwrapper.libflashplayer.so
/var/lib/flashplugin-installer/npwrapper.libflashplayer.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, stripped
ve
$ file /usr/lib/flashplugin-installer/libflashplayer.so
/usr/lib/flashplugin-installer/libflashplayer.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped
sonuçlarını aldım. İkinci dosya libflashplayer.so 32 bit. Ancak bu, bozuk bir sembolik bir link. Yani Firefox bu dosyayı görmüyor (aslında npwrapper.libflashplayer.so dosyasının bir kopyası buraya konarak sembolik link onarılabilir). Dolayısıyla çalışan Flash'ın 64 bit olduğu sonucuna varabiliriz.
Bunu da bulduktan sonra söyleyeceğim birşeyin kalmadığını farkettim.