Dans notre produit, nous livrons des binaires Linux qui se lient dynamiquement à des bibliothèques système comme "libpam". Sur certains systèmes clients, nous obtenons l'erreur suivante sur stderr lorsque le programme s'exécute:
./authpam: /lib/libpam.so.0: no version information available (required by authpam)
L'application fonctionne correctement et exécute le code de la bibliothèque dynamique. Ce n'est donc pas une erreur fatale, c'est vraiment juste un avertissement.
Je suppose que cette erreur provient de l'éditeur de liens dynamique lorsque la bibliothèque installée par le système manque quelque chose que notre exécutable attend. Je ne sais pas grand-chose sur les éléments internes du processus de liaison dynamique ... et googler le sujet n'aide pas beaucoup. :(
Quelqu'un sait ce qui cause cette erreur? ... comment puis-je diagnostiquer la cause? ... et comment changer nos exécutables pour éviter ce problème?
Mise à jour: le client est passé à la dernière version de debian «testing» et la même erreur s'est produite. Ce n'est donc pas une bibliothèque libpam obsolète. Je suppose que je voudrais comprendre de quoi se plaint l'éditeur de liens? Comment puis-je rechercher la cause sous-jacente, etc.?
Fwiw, j'ai eu ce problème lors de l'exécution de check_nrpe sur un système sur lequel le système de surveillance zenoss était installé. Pour ajouter à la confusion, cela fonctionnait bien en tant qu'utilisateur root mais pas en tant qu'utilisateur zenoss.
J'ai découvert que l'utilisateur zenoss avait un LD_LIBRARY_PATH qui l'a amené à utiliser les bibliothèques zenoss, qui émettent ces avertissements. C'est à dire:
Donc de toute façon, ce que j'essaie de dire: vérifiez vos variables comme LD_LIBRARY_PATH, LD_PRELOAD, etc.
la source
Comment compilez-vous votre application? Quels drapeaux de compilateur?
D'après mon expérience, lorsque vous ciblez le vaste domaine des systèmes Linux, créez vos packages sur la version la plus ancienne que vous êtes prêt à prendre en charge, et comme de plus en plus de systèmes ont tendance à être rétrocompatibles, votre application continuera à fonctionner. En fait, c'est toute la raison de la gestion des versions de la bibliothèque - assurer la compatibilité descendante.
la source
Avez-vous déjà vu cela ? La cause semble être un très vieux libpam sur l'un des côtés, probablement sur ce client.
Ou les liens vers la version peuvent manquer: http://www.linux.org/docs/ldp/howto/Program-Library-HOWTO/shared-libraries.html
la source