2013-11-26 18 views
14

arasındaki fark nedir? C dilinde bir statik kitaplık ve dinamik kitaplık arasındaki fark nedir? PencerelerdeStatik kütüphane ve dinamik bir

+0

bu [http://stackoverflow.com/questions/20229364/what-is-the-difference-between-a-static-library-and-a-dynamic-one][1] deneyin [1]: http://stackoverflow.com/questions/20229364/what-is-the-difference-between-a-static-library-and-a-dynamic-one – Stef

cevap

32

Bu soru biraz açıklamak için çok geniştir, ancak size daha fazla çalışabileceğiniz temel bir fikir vermeyi deneyeceğim.

İlk olarak, kütüphanenin ne olduğunu bilmeniz gerekir. Temel olarak, bir kütüphane bir fonksiyonlar topluluğudur. Kodumuzda veya o dosyada tanımlı olmayan fonksiyonları kullandığımızı fark etmiş olabilirsiniz. Onlara erişebilmek için, bu fonksiyonların beyanlarını içeren bir başlık dosyası ekliyoruz. Derleme işleminden sonra, bu işlev bildirimlerini başka bir dosyadaki tanımlarıyla ilişkilendiren bir bağlantı adı verilir. Bunun sonucu gerçek yürütülebilir dosyadır.

Şimdi, anlattığım bağlantı, statik bir bağlantıdır. Bu, her çalıştırılabilir dosyanın içinde barındırdığı her kitaplık (işlevlerin toplanması) içerdiği anlamına gelir. Aynı işlevlere ihtiyaç duyabilecek birçok program olduğu için bu alan kaybıdır. Bu durumda, bellekte aynı işlevin daha fazla kopyası olacaktır. Dinamik bağlantı, bunu derleme zamanında değil, çalışma zamanında bağlayarak engeller. Bu, tüm işlevlerin özel bir bellek alanında yer aldığı ve her programın birden fazla kopyasına sahip olmadan erişebileceği anlamına gelir. Bu gerekli bellek miktarını azaltır.

Cevabımın başında belirttiğim gibi, bu size basit bir anlayış sağlamak için çok basitleştirilmiş bir açıklamadır. Bu konuda daha fazla çalışmanızı şiddetle tavsiye ediyorum.

+0

Özlü ve iyi açıklanmış. Teşekkür ederim! – SRG

2

:

statik kütüphane yürütülebilir içinde bağlantılı olacak ve zaman değişmeyecek bir .lib dosyasıdır.

Dinamik kitaplık, uygulamanıza bağlı bir .dll dosyasıdır ve yürütürken yüklediğiniz dll dosyasına bağlı olarak değişebilir.

+0

emin değilim dll var Linux'ta. – Daniel