SORU
13 Mart 2012, Salı


Paylaşılan Nesneler arasındaki fark.yani), statik kitaplıkları (.a)'in (DLL.yani)?

Linux kütüphaneleri açısından bazı tartışmalar dahil edilmiştir, ve bazı şeyleri teyit etmek istiyorum.

Bir uygulama oluştururken kütüphaneleri kullanmanın iki yolu vardır benim anlayış (ben yanlışım ve yazıma daha sonra düzenleyeceğim varsa düzeltin) için:

  1. Statik kitaplıkları (.dosyalar: bağlantı zaman, tüm kütüphane bir kopyasını kütüphanede fonksiyonları her zaman çağıran uygulama için kullanılabilir olan son uygulama içine konur
  2. Paylaşılan Nesneler (.dosyaları yani): bağlantı zaman, nesne sadece ilgili başlık üzerinden API karşı doğrulanır (.h) dosya. Kütüphane ihtiyacı aslında çalışma zamanına kadar kullanılan, değil.

Statik kütüphaneler bariz avantajı tüm uygulama dinamik kütüphane yararına olan ise kendi kendine yeten, imkanı vermesidir "."dosya güvenliği bir hata) nedeniyle güncellenmesi ihtiyacı olursa (örn: temel uygulama çekirdekler gerektirmeden değiştirilebilir.

Hem olsa bile, bazı insanlar, Paylaşılan Nesneler ve dinamik bağlı kütüphaneler (DLL) arasında bir ayrım yapmak duydum "."dosyaları. Linux üzerinde C/C gelişim konusunda veya herhangi bir diğer POSIX uyumlu (örn: MİNİX, UNİX, RNE, vb) OS paylaşılan nesneleri ve DLL arasında herhangi bir fark var mı? Bir önemli fark (şimdilik) paylaşılan nesneleri DLL ilk dlopen kullanarak açılmalıdır ise sadece çalışma zamanında kullanılan olduğu söylendi() uygulama içinde arama.

Son olarak, bazı geliştiriciler", benim anladığım kadarıyla da statik kütüphaneler kendilerini, ama hiç bir uygulama tarafından kullanılan doğrudan." arşiv paylaşılan söz duydum Bunun yerine, diğer statik kitaplıkları "" (ama hepsi değil) bazı fonksiyonlar statik kütüphane inşa ediliyor paylaşılan arşiv/kaynaklar. çekmek için arşiv paylaşılan karşı bağlayacak

Tüm yardımlarınız için şimdiden teşekkür ederim.

Güncelleme:


Bu şartlar bana verilmiştir bu bağlamda, benim sanayide bile sadece konuşma diline olabilecek bu hüküm, küçük farklar öğrendim:

  1. Paylaşılan Nesne otomatik olarak program başlatıldığında bir programa bağlı Bir kütüphane, ve tek başına bir dosya olarak var. Kütüphane derleme zamanı (örn: bir kitaplık dosyası mylib adlı =-lmylib.LDOPTS tavsiyesine listesine dahil edilmiştir yani).Kütüphane uygulama başladığında zaman ve derleme sırasında mevcut olması gerekir.
  2. Statik Kütüphane: Bir kütüphane olduğunu birleştirilmiş getiren asıl programın kendisi yapı zaman için bir tek (büyük) uygulamayı içeren uygulama kodu ve kütüphane kod otomatik olarak bağlı olan bir program program Kurulu, ve son ikili içeren iki ana program ve kütüphane kendisi var olduğu tek bir bağımsız ikili dosya. Kütüphane derleme zamanı (örn: bir kitaplık dosyası mylib adlı =-lmylib.LDOPTS tavsiyesine listesine dahil edilmiştir a).Kütüphane derleme zamanında mevcut olması gerekir.
  3. DLL: Aslında aynı gibi paylaşılan bir nesne, ama yerine dahil olmak üzere bağlantılı liste derleme zamanında, kütüphane yüklü)dlopen()/dlsym() komutları böylece kütüphane değil gerekir şu anda inşa programı derlemek için.Ayrıca, kütüphane şu anda (zorunlu) uygulama başlangıç zamanı derlemek gerekmezşu an sadece , dlopen/dlsym aramalar yapılır. gerektiği gibi
  4. Paylaşılan Arşivi: Aslında statik bir kütüphane, ama derlenmiş olarak aynı "ihracat-paylaşılan" bayrak. Kütüphane zaman (örn: LDOPTS =-lmylibS kütüphane dosya adında mylib**5.derleme bağlama listesine dahil edilmiştir a). Ayrım ikisinin arasında olan bu ek bayrağıdır gerekirse bir paylaşılan nesne ya da DLL istiyor için statik olarak bağlantı paylaştı arşiv içine kendi kodu VE yapabilir işlevleri paylaşılan nesne mevcut diğer programlar yerine bunları kullanarak iç DLL. Bu birisi statik bir kütüphane sağlar, bu durumda yararlı olduğunu, ve bunun gibi bir ÇOK yeniden paketlemek istediğiniz.Kütüphane derleme zamanında mevcut olması gerekir.

CEVAP
13 Mart 2012, Salı


Bir(.statik kitaplığı a)bir kütüphane olabilir bağlantılı doğrudan son çalıştırılabilir linker tarafından üretilen,yer ve ihtiyac yoktur. var kütüphaneye sistemi nerede yürütülebilir olacak dağıtmış.

Bir(.paylaşılan kitaplık yani)ama son yürütülebilir bağlantılı gömülü bir kütüphane, yürütülebilir başlatıldığında yüklenecek ve yürütülebilir dağıtıldığı sistem içinde bulunması gerekir.

Birwindows dinamik bağlantı kitaplığı(.dll)paylaşılan bir kütüphane gibi.yani) işletim sistemi ile ilgili iki uygulamaları arasında bazı farklar vardır ama linux (Windows vs Linux) :

BirDLLtanımlama fonksiyonları: iki türlü olabilir ihraç ve iç. Verilen fonksiyonların tanımlı olduğu DLL içinde diğer modüller tarafından çağrılmak üzere tasarlanmıştır. Dahili fonksiyonları genellikle sadece tanımlı olduğu DLL içinde çağrılmak üzere tasarlanmıştır.

BirBu YÜZDENLinux kitaplığı tüm semboller sorgulama işlemi için kullanılabilir beri özel ihracat beyanı verilebilir semboller belirtmek gerek kalmaz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • TotalxLuna

    TotalxLuna

    27 Kasım 2011
  • Troy Hunt

    Troy Hunt

    29 EYLÜL 2011
  • UberFacts

    UberFacts

    26 EKİM 2013