[linux-ileri] Re: VB for Linux?

---------

New Message Reply About this list Date view Thread view Subject view Author view

From: Deniz Akkus Kanca (deniz@arayan.com)
Date: Tue 24 Dec 2002 - 13:40:04 EET


Cenk Gurel wrote:

> sizden bir ricam var
> delphi ile linux a convert edilen bir proje
> daha dogrusu birsekilde linux icin tasarlanmis
> projeler her linux cesidinde calisabilirmi?

Bir programın nerede çalışıp çalışmayacağının cevabı, hem Win, hem Linux
için geçerlidir:

Bu, yazılımın link (bağlama) metoduna göre değişebilir.

Bir yazılım eğer paylaşımlı kitaplıklarla (shared library, Windows
dünyasında DLL dosyaları, Linux dünyasında libxyz.so şeklinde olan
dosyalar) dinamik bağlanmış ise, o programın salt binary program
dosyasını (Windows dünyasında EXE dosyası, Linux dünyasında sonek
yoktur) alıp bir tarafa kopyalamak çalışmayabilir. -- programın
kullandığı bütün paylaşımlı kitaplıkların kopyalanan sistemde bulunması
gerekir.

Eğer bir yazılım statik olarak bağlanmış ise, o zaman ilgili işletim
sisteminde çok önemli bir değişiklik (binary dosyanın biçemi, örneğin
Linux dünyasında ELF öncesi) olmadığı müddetçe, başka bir makinaya salt
kopyalanma yolu ile aktarıldığı zaman bile çalışır.

Windows dünyasında ortalığı karıştıran mesele:

1. Programların, kendi yazılımının içindeki işlevleri de genelde bir DLL
olarak oluşturması -- yani yazılım, derlendiği zaman genelde en az iki
dosyadan oluşur, FOOBAR.EXE ve FOOBAR.DLL. FOOBAR.EXE'yi kopyalarken
FOOBAR.DLL'i unutursunuz, varlığını bilmezsiniz vs.

2. Hemen her programın, derlendiği sistemdeki DLL versiyonlarına bağımlı
olması, bu versiyonların sık sık değişmesi, hatta program kurucuların,
programı kurarken, sistem DLL'lerinden de ihtiyaçları olabileceğini
düşündüklerini paketleyip yeni sisteme atıvermeleri.

Windows dünyasında bir program kurulduğu zaman sebepsiz yere başka
şeylerin bazen çalışmaz hale gelmesinin ana sebebi yüklenen son
programın aslında kendisine ait olmayan DLL'leri değiştirmesidir -- bir
paketleme sorunu yani.

3. Programlar kendileri ile ilgili bazı bilgileri registry'ye
kaydederler, oradan okumak isterler vs. Linux'da bunun muadili yoktur.
Bu, tamamen Windows'a has ve bağlama metodları ile alakasız bir problemdir.

Bu kadar sorun yaratan bir şey olduğuna göre, neden paylaşımlı
kitaplıkların kullanıldığı sorulabilir. Bunun cevabı basittir:

1. Paylaşımlı kitaplıklar diskte kaplanan alandan tasarruf getirir --
her bir yazılım, ihtiyaç duyduğu bütün işlevleri binary dosyasının
içerisinde bulundursa, çok büyük, monolitik binary dosyaları
oluşturursunuz. Günümüzde statik bağlanan bir program herhalde 200-300
MB'ı bulabilir. (Eğer çok sayıda başka kitaplık, örneğin GUI kullanıyorsa)

2. Bu son derece büyük monolitik programı belleğe almak, diskten okumak
yavaş olacaktır. -- Bilgisayar bütün 200-300 MB'ı hafızaya okuyacak ve
ondan sonra çalıştırmaya başlayacaktır. Yani programlar yavaş
yüklenecektir.

Halbuki paylaşımlı kitaplık modelinde, o function call geldiği zaman
ilgili paylaşımlı kitaplık hafızaya yüklenecektir. Hatta, başka bir
çalışan program yüzünden, aynı paylaşımlı kitaplık zaten hafızada bile
olabilir.

3. Monolitik büyük program, hafızada çok yer kaplayacaktır.

Her ne kadar kullanımda biraz dikkat gerektirse de, paylaşımlı
kitaplıklar iyi bir şeydir.

Sizin sorunuza geri dönersek:

1. Linux üzerinde garantide olmak isterseniz, statik bağlayın. Eğer
oluşan program imkansız derecede büyük değil ise, garantili olarak sağa
sola kopyalayarak çalıştırabilirsiniz.

2. Linux'lar üzerinde paylaşımlı kitaplıklar Windows'a nazaran daha
medeni şekilde kullanılır. Dolayısıyla dinamik bağlanmış bir yazılım da
başka bir sistem üzerinde %90 ihtimal ile çalışır.

Esen kalın,
Deniz


New Message Reply About this list Date view Thread view Subject view Author view

---------

Bu arsiv hypermail 2b29 tarafindan uretilmistir.