Maison  >  Article  >  développement back-end  >  Comment contrôler la préférence de chemin de bibliothèque dans C Linking ?

Comment contrôler la préférence de chemin de bibliothèque dans C Linking ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-24 02:52:29613parcourir

How to Control Library Path Preference in C   Linking?

Spécifier la préférence de chemin de bibliothèque dans la liaison C

Lors de la liaison d'un programme C à des bibliothèques externes, contrôler la préférence pour des chemins de bibliothèque spécifiques peut être difficile . Par exemple, si vous avez une bibliothèque locale nommée libfoo.so.0 dans /my/dir mais qu'une autre bibliothèque du même nom réside dans /usr/local/lib, l'éditeur de liens peut donner la priorité à cette dernière.

Solution 1 : utilisez LD_LIBRARY_PATH

La solution la plus simple consiste à ajouter le chemin où réside votre nouvelle bibliothèque à la variable d'environnement LD_LIBRARY_PATH. Au moment de l'exécution, votre programme recherchera ce chemin avant les emplacements standard des bibliothèques. Cependant, il convient de noter les implications potentielles en matière de sécurité et de performances associées à l'utilisation de LD_LIBRARY_PATH.

Solution 2 : utilisez l'option -Wl,-rpath

Vous pouvez également utiliser l'option du compilateur -Wl,-rpath,$(DEFAULT_LIB_INSTALL_PATH) via gcc pour demander à l'éditeur de liens d'utiliser le chemin de recherche de la bibliothèque d'exécution au lieu des répertoires standard. Cette option peut être utilisée pour une solution temporaire ou, si vous préférez, vous pouvez modifier définitivement le chemin de recherche de bibliothèque par défaut de votre système.

Vérification des informations sur la bibliothèque

Pour vérifier les bibliothèques dont votre éditeur de liens est conscient, vous pouvez utiliser la commande :

<code class="bash">/sbin/ldconfig -p | grep libpthread</code>

De même, pour inspecter les bibliothèques que votre application utilise, utilisez :

<code class="bash">ldd foo</code>

En suivant ces étapes, vous pouvez effectivement spécifier la préférence pour les chemins de bibliothèque pendant le processus de liaison dans vos programmes C.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn