2012-09-06 41 views
14

Ben (linux üzerine) bir 3. parti kitaplığı derlemek ve dosyaları libsomething.a oluşturuyor ben.so ve .a dosyaları arasındaki fark nedir?

dosya .bu olan benim diğer kütüphaneleri var olduğunu görmek için çalışıyorum Ama bile .a kütüphane paylaşılan ve anlaşılıyor Tıpkı bir tıpkı bir .so libre

gibi kullanılabilir. veya farklı adlandırma kuralıyla aynıdır.

+2

Aynı şekilde kullanılabileceklerini söyleyen nedir? –

+0

@CarlNorum çünkü her iki türe de bağlantı mümkün - sadece sonuç farklı olacak. –

+0

@ H2CO3, 'gibi sadece kullanılabilir' oldukça zayıf bir tanımı, ama ben satın alacağım, sanırım ... –

cevap

17

ama kütüphanesinde

Hayır'ı paylaşılır bile .a, statik kütüphane var olduğu görülmektedir.

ve sadece evet o zaman, bağlantı anlamına Eğer

lib bir .bu gibi kullanılabilir. Ancak, bir .so dosyasıyla yapabileceğiniz bir .a dosyası dlopen() yapamazsınız.

Sorularınızı cevaplamak için eski arkadaşımıza Uncle G dan her zaman başvurabilirsiniz. Bir .so dosya Windows üzerinde bir DLL benzer bir paylaşılan nesne dinamik kütüphane iken

+0

Teşekkürler. Kafam karıştı. Sorunum onları ilişkilendirmekle ilgili değildi. her ikisi de bağlanabilir. ama ben sadece .a dinamik veya statik olarak bağlanabilir olup olmadığını bilmek istedim. şimdi açık – rajshenoy

+8

"G amca" bağlantısı kesildi. – splungebob

18

A .a dosya, bir statik kütüphane olduğunu.

A .a kutu, ithal edebilir derleme & .so sırasında programın bir parçası olarak dahil programı yükler iken.

15

*.a karşı bağlantı oluşturduğunuzda, kütüphaneden gelen kod yürütülebilir dosyanın kendisinde bulunur ve yürütülebilir dosya *.a dosyasının bulunmasına gerek olmadan çalıştırılabilir. *.so karşı bağlandığınızda, bu durumda değil ve çalışma zamanında *.so dosya bulunmalıdır.

İlgili konular