Warum gibt LD weiterhin "Keine Versionsinformationen verfügbar" aus?

7

Bei jedem Laden einer Bibliothek wird folgende Fehlermeldung angezeigt:

Keine Versionsinformationen verfügbar

Diese Bibliothek wurde auf einem anderen PC (Ubuntu 10.04) kompiliert als dem, auf dem sie ausgeführt wird (mandriva 2010.2).

$ ldd /usr/local/gnu-eabi-4.5.2/i686-pc-linux-gnu/arm-eabi/lib/libbfd-2.21.so
/usr/local/gnu-eabi-4.5.2/i686-pc-linux-gnu/arm-eabi/lib/libbfd-2.21.so: /lib/libz.so.1: no version information available (required by /usr/local/gnu-eabi-4.5.2/i686-pc-linux-gnu/arm-eabi/lib/libbfd-2.21.so)
 linux-gate.so.1 =>  (0xffffe000)
 libz.so.1 => /lib/libz.so.1 (0xb77a7000)
 libc.so.6 => /lib/i686/libc.so.6 (0xb7655000)
 /lib/ld-linux.so.2 (0xb787a000)

Bearbeiten: Die Problemumgehung hat nicht funktioniert.

ofaurax
quelle

Antworten:

10

Nein, das tut es nicht. Es scheint zu bedeuten, dass die Version von libz, mit der Sie beim Kompilieren Ihres Programms verknüpft haben, mit anderen Tools erstellt wurde als die Version auf dem von Ihnen verwendeten madriva-System. In der Mandriva-Kopie fehlen Informationen zur Symbolversion, die in der Kopie der libz-Bibliothek vorhanden waren, mit der Ihr Programm ursprünglich verknüpft war. Dies hat mit Unterschieden in den jeweiligen Build-Umgebungen zu tun, nicht mit Versionen der libz-Bibliothek selbst.

Ich vermute, Sie erhalten die Nachricht weiterhin, bis Sie eine Kopie von libz bereitstellen, die mit demselben Toolset wie Ihre Binärdatei erstellt wurde, dh einem Toolset, das Symbolversionen in die Bibliothek einfügt. Oder erstellen Sie Ihre Binärdatei mit Tools, die denen ähneln, die beim Kompilieren von libz auf Ihrem Mandriva-System verwendet wurden, sodass in der Binärdatei keine Verweise auf Symbolversionen vorhanden sind.

Siehe: http://harmful.cat-v.org/software/dynamic-linking/versioned-symbols http://www.linux-kongress.org/1997/youngdale.html http://www.usenix.org/ publikationen / bibliothek / verfahren / als00 / 2000papers / papiere / full_papers / browndavid / browndavid_html /

Ich kenne kein Tool, mit dem Sie die auf dem anderen System kompilierte Binärdatei ändern können, um die nicht gewünschten Symbolversionsreferenzen zu löschen und gegebenenfalls alle anderen zu belassen.

Gleichnamig
quelle
3

Dieser Fehler "Keine Versionsinformationen verfügbar" bedeutet, dass die Version von libz, mit der Sie beim Kompilieren der Bibliothek verknüpft haben, neuer ist als die Version auf dem von Ihnen verwendeten Mandrivia-System.

jsbillings
quelle