Saat ini saya mencoba untuk port aplikasi C ke AIX dan saya semakin bingung. Apa itu file .a dan .so dan bagaimana mereka digunakan saat membangun / menjalankan aplikasi?
c
unix
compilation
shared-libraries
.a
Dunc
sumber
sumber
a
rchive dan lainnyas
haredo
bjectJawaban:
Perpustakaan arsip (.a) terhubung secara statis yaitu ketika Anda mengkompilasi program Anda dengan opsi -c di gcc. Jadi, jika ada perubahan dalam pustaka, Anda perlu mengkompilasi dan membangun kode Anda lagi.
Keuntungan dari .so (objek yang dibagikan) di atas .a library adalah bahwa mereka terhubung selama runtime yaitu setelah membuat file .o Anda -o opsi di gcc. Jadi, jika ada perubahan pada file .so, Anda tidak perlu mengkompilasi ulang program utama Anda. Tetapi pastikan bahwa program utama Anda terhubung dengan file .so baru dengan perintah ln.
Ini akan membantu Anda membangun file .so. http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html
Semoga ini membantu.
sumber
pic
(posisi kode independen)?.a adalah pustaka statis. Jika Anda menggunakan kode yang tersimpan di dalamnya, kode itu diambil darinya dan disematkan ke dalam biner Anda sendiri. Dalam Visual Studio, ini akan menjadi file .lib.
.so adalah perpustakaan dinamis. Jika Anda menggunakan kode yang tersimpan di dalamnya, kode itu tidak diambil dan disematkan ke dalam biner Anda sendiri. Sebaliknya itu hanya direferensikan, jadi biner akan bergantung pada mereka dan kode dari file tersebut ditambahkan / dimuat saat runtime. Dalam Visual Studio / Windows ini akan menjadi file .dll (dengan file .lib kecil yang berisi informasi penautan).
sumber
.lib
File kecil untuk.dll
disebut perpustakaan impor.File .a biasanya perpustakaan yang terhubung secara statis (atau arsip yang lebih akurat), dan
.so adalah perpustakaan yang terhubung secara dinamis.
Untuk melakukan port, Anda memerlukan kode sumber yang dikompilasi untuk membuatnya, atau file yang setara pada mesin AIX Anda.
sumber
Mereka digunakan dalam tahap menghubungkan.
.a
file terhubung secara statis, dan.so
file semacam terhubung, sehingga perpustakaan diperlukan setiap kali Anda menjalankan exe.Anda dapat menemukan di mana mereka disimpan dengan melihat direktori lib ...
/usr/lib
dan/lib
memiliki sebagian besar darinya, dan ada jugaLIBRARY_PATH
variabel lingkungan.sumber
Wikipedia adalah sumber yang layak untuk info ini.
Untuk mempelajari tentang file perpustakaan statis seperti .a baca perpustakaan statis
Untuk mempelajari tentang file perpustakaan bersama seperti .so baca Library_ (komputasi) #Shared_libraries Pada halaman ini, ada juga info berguna di bagian Penamaan file .
sumber