it-swarm-id.com

Apa perbedaan antara file .a dan .so?

Sejauh yang saya mengerti mereka adalah perpustakaan, tetapi apa perbedaan antara keduanya?

70
Erik B

SEBUAH .a file adalah perpustakaan statis, sementara .so file adalah pustaka objek bersama (dinamis) yang mirip dengan DLL pada Windows. Ada beberapa informasi terperinci tentang perbedaan antara keduanya di halaman ini.

55
ajk

Sebagai tindak lanjut, file .a adalah arsip "ar". Tidak seperti arsip tar, ia menyimpan file .o atau objek, yang memungkinkannya ditarik keluar dari arsip, dan dihubungkan ke suatu program, antara lain. Anda dapat menggunakan ar untuk menyimpan file lain jika Anda mau.

Anda bisa mendapatkan daftar anggota file ar dengan parameter -t, misalnya:

ar -t /usr/lib/libc.a

File .so adalah file "objek bersama", dan memiliki lebih banyak informasi yang tersedia untuk tautan sehingga anggota dapat ditautkan ke program pemuatan secepat mungkin.

Misalnya, coba:

objdump -T /lib/libc-2.11.1.so

(atau versi libc.so apa pun yang Anda miliki di direktori/lib Anda.) Perhatikan bahwa file .so juga bisa berisi skrip linker yang mengarahkannya untuk menemukan file tersebut di tempat lain, atau menggunakan sesuatu yang lain.

Menariknya, file .so juga bisa menjadi program yang lengkap. Misalnya, mencoba menjalankan / lib/libc.so.6. (Sayangnya, bagian terakhir ini sepertinya tidak bekerja pada sistem yang lebih modern. Bukan berarti itu kerugian besar.)

29
Hack Saw