Şu anda bir C uygulaması AIX için bağlantı noktası çalışıyorum ve karışıyorum. .A ve .so dosyaları nedir ve bir uygulama oluştururken / çalıştırırken nasıl kullanılır?
Şu anda bir C uygulaması AIX için bağlantı noktası çalışıyorum ve karışıyorum. .A ve .so dosyaları nedir ve bir uygulama oluştururken / çalıştırırken nasıl kullanılır?
Yanıtlar:
Arşiv kitaplıkları (.a) statik olarak bağlanır, yani programınızı gcc'de -c seçeneği ile derlediğinizde. Bu nedenle, kitaplıkta herhangi bir değişiklik varsa, kodunuzu tekrar derlemeniz ve oluşturmanız gerekir.
.So (paylaşılan nesne) 'nin .a kitaplığı üzerindeki avantajı, çalışma zamanı sırasında, yani gcc'de .o dosyası -o seçeneğinizin oluşturulmasından sonra bağlantılı olmalarıdır. Bu nedenle, .so dosyasında herhangi bir değişiklik varsa, ana programınızı yeniden derlemenize gerek yoktur. Ancak ana programınızın ln komutu ile yeni .so dosyasına bağlı olduğundan emin olun.
Bu, .so dosyalarını oluşturmanıza yardımcı olacaktır. http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html
Bu yardımcı olur umarım.
pic
(pozisyondan bağımsız kod) ile ilgili mi?
.a statik kütüphanelerdir. İçlerinde depolanan kodu kullanırsanız, bunlardan alınır ve kendi ikili dosyalarınıza gömülür. Visual Studio'da bunlar .lib dosyaları olacaktır.
.so dinamik kütüphanelerdir. İçlerinde depolanan kodu kullanırsanız, bu kod kendi ikilinize alınmaz ve gömülmez. Bunun yerine sadece başvuruda bulunur, böylece ikili dosya onlara bağlı olacaktır ve bu nedenle dosyadaki kod çalışma zamanında eklenir / yüklenir. Visual Studio / Windows'da bunlar .dll dosyaları (bağlantı bilgilerini içeren küçük .lib dosyalarıyla) olacaktır.
.lib
dosyaya .dll
içe aktarma kitaplığı denir.
.a dosyaları genellikle statik olarak bağlanan (veya daha doğru arşivler)
kütüphanelerdir ve
.so dinamik olarak bağlantılı kütüphanelerdir.
Bağlantı noktası yapmak için bunları derlemek için derlenen kaynak koduna veya AIX makinenizdeki eşdeğer dosyalara ihtiyacınız olacaktır.
Bağlama aşamasında kullanılırlar. .a
exe'yi .so
her çalıştırdığınızda kütüphaneye ihtiyaç duyulması için dosyalar statik olarak bağlanır ve dosyalar bir şekilde bağlanır.
Nerede depolandıklarını lib dizinlerinden herhangi birine bakarak bulabilirsiniz ... /usr/lib
ve /lib
çoğuna sahip ve ayrıca LIBRARY_PATH
ortam değişkeni var.
Wikipedia bu bilgi için iyi bir kaynaktır.
.A gibi statik kütüphane dosyaları hakkında bilgi edinmek için Statik kütüphaneyi okuyun
.So gibi paylaşılan kütüphane dosyaları hakkında bilgi edinmek için Library_ (computing) #Shared_libraries okuyun Bu sayfada, Dosya adlandırma bölümünde de yararlı bilgiler bulunmaktadır .
a
arşividir, diğeri ises
nefret edileno
bject