Qu'est-ce qu'un fichier .so?

45

J'ai des problèmes avec Flash sous Ubuntu et j'allais essayer de passer à la version Alpha de Flash 10.1.

Le problème est qu’il s’agissait d’un fichier .so, et je ne trouve aucune information sur ce qu’il en est.

John Moffitt
la source
1
D'autres affiches ont déjà répondu à votre question, il est donc inutile d'ajouter un autre texte sensiblement identique. J'attire cependant votre attention sur ce bogue ( bugs.launchpad.net/ubuntu/+source/flashplugin-nonfree/+bug/… ) car vos symptômes sont peut-être similaires et vous souhaitez y jeter un coup d'œil.
Mac
1
Presque oublié: dans la description du bogue liée ci-dessus, il y a aussi une solution de contournement qui résout le problème (commentaire n ° 16). Bonne chance!
Mac

Réponses:

60

Un fichier .so est un fichier de bibliothèque compilé. Il signifie "objet partagé" et est analogue à une DLL Windows.

Souvent, les fichiers de paquets les placent sous / lib ou / usr / lib ou à un endroit similaire lorsqu'ils sont installés. Si vous extrayez un fichier .so à un emplacement de votre $ LD_LIBRARY_PATH, un programme nécessitant la bibliothèque devrait pouvoir l’utiliser.

Idéalement, lisez la documentation fournie pour vous assurer qu’elle se trouve au bon endroit.

Si vous exécutez une commande similaire locate adobe-flashpluginà celle du terminal, il est possible que certaines bibliothèques existantes portent un nom similaire.

Andrew Flanagan
la source
2
À moins que Ubuntu ne fasse les choses complètement différemment des autres linkers dynamiques Linux, l'éditeur de liens dynamique ne recherche pas le chemin ($ PATH), mais plutôt un ensemble fixe de chemins ainsi que les répertoires spécifiés dans $ LD_LIBRARY_PATH. Voir les pages de manuel de ld.so et de ldconfig pour plus de détails.
Chris Cleeland
Cela semble juste - merci ... $ LD_LIBRARY_PATH pas $ PATH. :-)
Andrew Flanagan
1
/ usr / lib et / lib sont beaucoup plus courants que / var / lib. En fait, il est assez rare de placer une bibliothèque dans / var / lib.
Qedi
Désolé, j'étais pressé. :-) Je vais corriger ça ...
Andrew Flanagan
Ok .. Imaginons que j'ai un fichier .so ... De quoi ai-je besoin pour "l'utiliser"?
Pitto
10

Il existe deux types de bibliothèque Linux C / C ++ pouvant être créés. Il s’agit de bibliothèques statiques (.a) et de bibliothèques d’objets fragmentés liées dynamiquement (.so).

En ce qui concerne (.so) , il n’existe qu’une forme de cette bibliothèque, mais elle peut être utilisée de deux manières.

1) Dynamiquement lié au moment de l'exécution, mais statiquement conscient. Les bibliothèques doivent être disponibles pendant la phase de compilation / liaison. Les objets partagés ne sont pas inclus dans le composant exécutable mais sont liés à l'exécution.

2) Dynamiquement chargé / déchargé et lié au cours de l'exécution (c.-à-d. Plug-in de navigateur) à l'aide des fonctions système du chargeur de liaison dynamique.

Normalement, les fichiers de paquet placeront les fichiers ".so" dans / lib ou / usr / lib lors de l'installation.

Erandi
la source