web-dev-qa-db-fra.com

Quel est le rôle des bibliothèques statiques?

Les bibliothèques statiques par défaut résident dans /usr/lib ou /usr/lib64 mais je les ai toutes supprimées de mon système d'exploitation à l'aide de cette commande:

find / -name *.a -exec rm -rf {} \;

Mon linux est déjà OK et tout fonctionne bien!

Peut-on dire?

"Package.rpm ou * .deb contient les sorties du compilateur, seulement ils ont besoin de bibliothèques partagées.

Et lorsque nous installons un logiciel à partir du code source, si la structure utilise une bibliothèque statique, un éditeur de liens lors de la compilation, Copiez des bibliothèques statiques dans son fichier exécutable.

Sans les fichiers *.a de mon système, peut-être qu'à l'avenir, si j'installerais un logiciel à partir du code source, je serais confronté à des problèmes "

Expliquez-moi s'il vous plaît d'une manière simple

4
Sinoosh

Les bibliothèques statiques sont des bibliothèques utilisées par les fichiers binaires au moment de la compilation. Ils ne sont généralement pas réutilisés au moment de l'exécution car ils sont liés au binaire compilé au moment de la compilation et font partie du binaire lui-même.

En outre, lors de la mise en œuvre, ceux-ci ne sont pas partagés entre les fichiers binaires, seul le fichier binaire compilé avec une ou plusieurs bibliothèques statiques spécifiques utilise ce dernier. Donc, dans l’application, ce sont tout le contraire des bibliothèques liées statiquement.

Notez que les bibliothèques statiques se terminent par .a tandis que les bibliothèques dynamiques se terminent par .so.

8
heemayl

Les bibliothèques statiques sont des packages indépendants binaires du code source compilé que vous "importez" dans votre application lors de sa compilation de manière statique.

Vraiment, un programme appelé linker, effectue une sorte de "copier-coller" de leur code compilé avec votre code source compilé (c'est un peu plus complexe mais cette explication peut être bien aller pour répondre à votre requête ...) .

Ensuite, le message que vous avez rapporté dans l'OP indique en synthèse que la suppression des bibliothèques statiques du répertoire "lib" ne pose pas de problèmes pour les programmes installés, car, comme cela a été dit, ils sont déjà "collés" dans les binaires de programmes installés, et cela peut arriver sous Linux parce que ses programmes sont généralement distribués directement par leur code source non compilé, et qu’ils ont donc besoin d’une étape de compilation, généralement exécutée avec rpm ou d’autres gestionnaires de paquets/configurations.

Comme toujours dit le message posté, si vous installez de nouveaux programmes, l'installation pourrait échouer si elles ont besoin de bibliothèques supprimées, car lors de la compilation, l'éditeur de liens ne trouvera pas les bibliothèques statiques nécessaires (référencées).

J'espère que c'est clair, désolé pour mon mauvais anglais ..