GNU/Linux >> Tutoriales Linux >  >> Linux

¿Por qué necesitamos el archivo .so.1 en Linux?

Digamos que estamos hablando de libtest . Si miras a tu alrededor, verás libtest.so , que es un enlace a libtest.so.1 , que a su vez enlaza con libtest.so.1.5 .

Un ejecutable usando libtest enlazará contra libtest.so que es libtest.so.1 en este caso (esto está escrito en el ejecutable, consulte ldd(1) ). Si tu distribución cambia libtest para corregir errores, la nueva versión podría dar libtest.so.1.6 (y después de la actualización libtest.so.1 enlaces a él, los programas en ejecución seguirán usando libtest.so.1.5 hasta que salgan). Mientras no se realicen cambios en ABI, todo funciona bien. Y el hecho de que no haya cambios en la API se indica mediante el número de versión 1 sin cambios.

Digamos que el ocupado libtest castores presentan una biblioteca nueva, brillante, reescrita desde cero, con ABI modificado. A medida que cambió la ABI, cambiaron el número de versión principal a 2. Instalas ese y ahora tienes la cadena libtest.so --> libtest.so.2 --> libtest.so.2.1 . Tenga en cuenta que ahora tiene instaladas las versiones 1 y 2. Tus programas anteriores todavía funcionan bien, usando libtest.so.1 , pero si compila un programa nuevo, el compilador (en realidad, el enlazador) recogerá libtest.so y así apuntar el ejecutable al nuevo libtest.so.2.1 (a menos que se le pida específicamente que use la versión anterior).

Tenga en cuenta que los números de versión no necesitan tener ninguna relación con los números de versión del código fuente; el número mayor es la versión ABI, el número menor es opcional y se puede usar para realizar un seguimiento de las revisiones. Así que aquí (Fedora 20) estoy usando systemd-libs-208-15.fc20.x86_64 , que proporciona libsystemd-daemon.so.0.0.10 .


Estas son versiones diferentes de la misma biblioteca.

Normalmente, desea la versión estable más reciente de la biblioteca, por lo que vincula a x.so, que está vinculado a esa versión más reciente. Cuando una nueva versión esté disponible, digamos x.so.2, puede hacer que todo su sistema la use, vinculando x.so a x.so.2

A veces, desea vincular a una versión anterior, por ejemplo, si su programa se basa en una peculiaridad que se solucionó o la última versión introdujo un error. A veces, desea vincular a una nueva versión experimental, por ejemplo, si la está probando o si corrige un error en la versión actual. En ese caso, vincularía directamente a la versión numerada, con suerte como una medida temporal.


Linux
  1. Por qué mi necesidad de control me hizo cambiar a Linux

  2. Linux – ¿Todo es un archivo?

  3. Necesita un buen editor hexadecimal para Linux

  4. ¿Por qué se usa select en Linux?

  5. ¿Por qué necesitamos un gestor de arranque en un dispositivo integrado?

Menos comando en Linux

Comando Gzip en Linux

Comando Gunzip en Linux

Comando Stat en Linux

Compresión de archivos de Linux:todo lo que necesita saber

Permisos de archivos de Linux:todo lo que necesita saber