Bonjour à tous,
Je suis tombé dans un projet d'école avec un répertoire libCalcul ou se trouvait :
libCalcul.so -> libCalcul.so.1.0.0
libCalcul.so.1 -> libCalcul.so.1.0.0
libCalcul.so.1.0 -> libCalcul.so.1.0.0
libCalcul.so.1.0.0
avec les fleches représentant des liens symboliques. Je n'ai rien compris a tous ces liens symboliques. Lors de l'édition de lien la lib libCalcul.so.1.0.0 est la seul qui compte, avec la commande g++ programme.cpp -L:/home/ -lCalcul.so.1.0.0 -o progFinale et ca devrait marcher alors pourquoi créer tous ces liens symboliques?
Ensuite ma seconde question :
une fois que j'ai compilé mon code, si je met l'exécutable progFinale sur une autre machine Linux et que je place sur cet autre machine la lib libCalcul.so.1.0.0 dans le répertoire /home, il n'y aura pas de probleme car l'exécutable progFinale au lancement du programme va faire l'édition de lien et va chercher dans le répertoire /home la lib, donc le programme devrait se lancer sans aucun soucis ?
Merci d'avance pour vos réponses
# Liens
Posté par gUI (Mastodon) . Évalué à 5. Dernière modification le 17 décembre 2018 à 20:37.
Voici les significations de ces liens (dans l'ordre):
Donc toi, programmeur, il faudrait que tu saches ce dont tu as besoin.
Sans trop savoir ce que fait cette lib, je lierais avec "libCalcul.so.1" pour laisser une chance à des mises à jours de ne pas tout casser.
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
# Résolution de liens à l'exécution
Posté par Cyril Brulebois (site web personnel) . Évalué à 5.
Hello,
Alors c'est normalement juste
-lCalcul
à passer, ce qui devrait faire le nécessaire.Maintenant, concernant la portabilité, il y a une dépendance qui va avoir été encodée dans le binaire ELF ainsi généré. Tu peux les consulter avec
objdump -x ton-binaire|grep NEEDED
.À l'exécution, un certain nombre de chemins vont être essayés, en fonction de la configuration du dynamic linker (
ld.so
), cf./etc/ld.so.conf
et assimilés (/etc/ld.so.conf.d/*
).Si tu veux ajouter un chemin vers des bibliothèques ELF (par exemple un chemin dans
/home
), tu peux positionner la variableLD_LIBRARY_PATH
à un ou plusieurs chemins (de préférence absolus, séparés par le caractère:
comme d'habitude avecPATH
) pour compléter la configuration système.Debian Consultant @ DEBAMAX
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.