GNU/Linux >> Belajar Linux >  >> Linux

Mengapa kita membutuhkan file .so.1 di Linux?

Katakanlah kita berbicara tentang libtest . Jika Anda melihat-lihat, Anda akan melihat libtest.so , yang merupakan tautan ke libtest.so.1 , yang pada gilirannya tertaut ke libtest.so.1.5 .

Dapat dieksekusi menggunakan libtest akan ditautkan ke libtest.so yaitu libtest.so.1 dalam hal ini (ini ditulis ke dalam executable, lihat ldd(1) ). Jika distribusi Anda mengubah libtest untuk memperbaiki bug, versi baru mungkin memberikan libtest.so.1.6 (dan setelah memperbarui libtest.so.1 tautan ke sana, menjalankan program akan tetap menggunakan libtest.so.1.5 sampai mereka keluar). Selama tidak ada perubahan ABI, semuanya berfungsi dengan baik. Dan fakta bahwa tidak ada perubahan API ditandai dengan nomor versi 1 yang tidak berubah.

Katakanlah libtest yang sibuk berang-berang datang dengan yang baru, semuanya berkilau, ditulis ulang dari pustaka awal, dengan ABI yang diubah. Saat ABI berubah, mereka mengubah nomor versi utama menjadi 2. Anda menginstal yang itu, dan sekarang Anda memiliki rantai libtest.so --> libtest.so.2 --> libtest.so.2.1 . Perhatikan bahwa Anda sekarang telah menginstal versi 1 dan 2. Program Anda sebelumnya masih berfungsi dengan baik, menggunakan libtest.so.1 , tetapi jika Anda mengompilasi program baru, kompiler (linker, sungguh) akan mengambil libtest.so dan dengan demikian mengarahkan executable ke libtest.so.2.1 yang baru (kecuali secara khusus diminta untuk menggunakan versi lama).

Perhatikan bahwa nomor versi so tidak perlu memiliki hubungan apa pun dengan nomor versi kode sumber; nomor mayor adalah versi ABI, nomor minor bersifat opsional dan dapat digunakan untuk melacak revisi. Jadi di sini (Fedora 20) saya menggunakan systemd-libs-208-15.fc20.x86_64 , yang menyediakan libsystemd-daemon.so.0.0.10 .


Ini adalah versi berbeda dari pustaka yang sama.

Biasanya, Anda menginginkan versi pustaka stabil terbaru, jadi Anda menautkan ke x.so, yang ditautkan ke versi terbaru tersebut. Saat versi baru tersedia, katakanlah x.so.2, Anda dapat membuat seluruh sistem Anda menggunakannya, dengan menautkan x.so ke x.so.2

Terkadang Anda ingin menautkan ke versi lama - misalnya jika program Anda bergantung pada kekhasan yang telah diperbaiki, atau versi terbaru memiliki bug. Terkadang Anda ingin menautkan ke versi eksperimental baru - misalnya jika Anda sedang mengujinya, atau jika versi tersebut memperbaiki bug di versi saat ini. Jika demikian, Anda akan menautkan langsung ke versi bernomor - semoga sebagai tindakan sementara.


Linux
  1. Mengapa kebutuhan saya akan kontrol membuat saya beralih ke Linux

  2. Linux – Semuanya Adalah File?

  3. Butuh editor hex yang bagus untuk Linux

  1. Mengapa saya menggunakan exa daripada ls di Linux

  2. Mengapa pilih digunakan di Linux

  3. Mengapa kita membutuhkan bootloader di perangkat tertanam?

  1. Cara memindahkan file di Linux

  2. Memahami Izin File Linux

  3. Perintah Ekor Linux