In unserem Produkt liefern wir einige Linux-Binärdateien, die dynamisch mit Systembibliotheken wie "libpam" verknüpft sind. Auf einigen Kundensystemen wird auf stderr der folgende Fehler angezeigt, wenn das Programm ausgeführt wird:
./authpam: /lib/libpam.so.0: no version information available (required by authpam)
Die Anwendung läuft einwandfrei und führt Code aus der dynamischen Bibliothek aus. Dies ist also kein schwerwiegender Fehler, sondern nur eine Warnung.
Ich denke, dass dies ein Fehler ist, der vom dynamischen Linker herrührt, wenn in der vom System installierten Bibliothek etwas fehlt, was unsere ausführbare Datei erwartet. Ich weiß nicht viel über die Interna des dynamischen Verknüpfungsprozesses ... und das Googeln des Themas hilft nicht viel. :(
Weiß jemand, was diesen Fehler verursacht? ... wie kann ich die Ursache diagnostizieren? ... und wie könnten wir unsere ausführbaren Dateien ändern, um dieses Problem zu vermeiden?
Update: Der Kunde hat auf die neueste Version von debian "testing" aktualisiert und der gleiche Fehler ist aufgetreten. Es ist also keine veraltete libpam-Bibliothek. Ich würde gerne verstehen, worüber sich der Linker beschwert. Wie kann ich die zugrunde liegende Ursache usw. untersuchen?
Fwiw, ich hatte dieses Problem beim Ausführen von check_nrpe auf einem System, auf dem das Zenoss-Überwachungssystem installiert war. Um die Verwirrung zu vergrößern, funktionierte es gut als Root-Benutzer, aber nicht als Zenoss-Benutzer.
Ich fand heraus, dass der Zenoss-Benutzer einen LD_LIBRARY_PATH hatte, der dazu führte, dass er Zenoss-Bibliotheken verwendete, die diese Warnungen ausgeben. Dh:
Also, was ich damit sagen will: Überprüfen Sie auch Ihre Variablen wie LD_LIBRARY_PATH, LD_PRELOAD usw.
quelle
Wie kompilierst du deine App? Welche Compiler-Flags?
Nach meiner Erfahrung sollten Sie Ihre Pakete auf der ältesten Version aufbauen, die Sie unterstützen möchten, wenn Sie auf den weiten Bereich der Linux-Systeme abzielen. Da mehr Systeme in der Regel abwärtskompatibel sind, funktioniert Ihre App weiterhin. Tatsächlich ist dies der ganze Grund für die Versionierung der Bibliothek - Gewährleistung der Abwärtskompatibilität.
quelle
Hast du das gesehen ? schon gesehen? Die Ursache scheint eine sehr alte libpam auf einer der Seiten zu sein, wahrscheinlich auf diesem Kunden.
Oder die Links für die Version fehlen möglicherweise: http://www.linux.org/docs/ldp/howto/Program-Library-HOWTO/shared-libraries.html
quelle