GNU/Linux >> Tutoriels Linux >  >> Linux

Pourquoi avons-nous besoin du fichier .so.1 sous Linux ?

Disons que nous parlons de libtest . Si vous regardez autour de vous, vous verrez libtest.so , qui est un lien vers libtest.so.1 , qui à son tour renvoie à libtest.so.1.5 .

Un exécutable utilisant libtest établira un lien avec libtest.so qui est libtest.so.1 dans ce cas (c'est écrit dans l'exécutable, voir ldd(1) ). Si votre distribution change libtest pour corriger les bogues, la nouvelle version pourrait donner libtest.so.1.6 (et après mise à jour libtest.so.1 des liens vers celui-ci, les programmes en cours d'exécution utiliseront toujours libtest.so.1.5 jusqu'à leur sortie). Tant qu'aucune modification de l'ABI n'est effectuée, tout fonctionne correctement. Et le fait qu'il n'y ait pas de changement d'API est signalé par le numéro de version 1 inchangé.

Disons que le libtest occupé les castors proposent une nouvelle bibliothèque entièrement brillante et réécrite à partir de zéro, avec un ABI modifié. Au fur et à mesure que l'ABI changeait, ils changeaient le numéro de version majeur en 2. Vous installez celui-ci, et maintenant vous avez la chaîne libtest.so --> libtest.so.2 --> libtest.so.2.1 . Notez que vous avez maintenant les versions 1 et 2 installées. Vos programmes précédents fonctionnent toujours correctement, en utilisant libtest.so.1 , mais si vous compilez un nouveau programme, le compilateur (l'éditeur de liens, en fait) récupérera libtest.so et ainsi pointer l'exécutable sur le nouveau libtest.so.2.1 (à moins qu'il ne soit spécifiquement demandé d'utiliser l'ancienne version, c'est-à-dire).

Notez que les numéros de version so n'ont pas besoin d'avoir de relation avec les numéros de version du code source ; le numéro majeur est la version ABI, le numéro mineur est facultatif et peut être utilisé pour suivre les révisions. Donc ici (Fedora 20) j'utilise systemd-libs-208-15.fc20.x86_64 , qui fournit libsystemd-daemon.so.0.0.10 .


Ce sont différentes versions de la même bibliothèque.

Normalement, vous voulez la version stable la plus récente de la bibliothèque, vous créez donc un lien vers x.so, qui est lié à cette version la plus récente. Lorsqu'une nouvelle version devient disponible, disons x.so.2, vous pouvez faire en sorte que tout votre système l'utilise, en liant x.so à x.so.2

Parfois, vous souhaitez créer un lien vers une ancienne version, par exemple si votre programme repose sur une bizarrerie qui a été corrigée ou si la dernière version a introduit un bogue. Parfois, vous souhaitez créer un lien vers une nouvelle version expérimentale, par exemple si vous la testez ou si elle corrige un bogue dans la version actuelle. Dans ce cas, vous feriez un lien direct vers la version numérotée - espérons-le comme mesure temporaire.


Linux
  1. Pourquoi mon besoin de contrôle m'a fait passer à Linux

  2. Linux - Tout est un fichier ?

  3. Besoin d'un bon éditeur hexadécimal pour Linux

  4. Pourquoi select est-il utilisé sous Linux

  5. Pourquoi avons-nous besoin d'un bootloader dans un appareil embarqué ?

Moins de commande sous Linux

Commande Gzip sous Linux

Commande Gunzip sous Linux

Commande Stat sous Linux

Compression de fichiers Linux :tout ce que vous devez savoir

Autorisations de fichiers Linux :tout ce que vous devez savoir