SuSE GmbH

SuSE Support-Datenbank

Titel: SuSE Binaries auf anderen Linux Distributionen

----------

Übersicht o Stichwortsuche o History o Versionen o Kategorien o Alle Artikel

----------

SuSE Binaries auf anderen Linux Distributionen

Bezieht sich auf

SuSE Linux: Versionen 6.0 bis 6.1

Symptom:

Sie haben auf SuSE Linux 6.0 oder 6.1 mit dem egcs eine Anwendung entwickelt. Nun möchten Sie diese auf anderen Linux Distributionen laufen lassen. Sie bekommen aber immer eine Fehlermeldung der Art:
: error in loading shared libraries
: undefined symbol: __register_frame_info

Ursache:

Dieses Problem existiert ausschließlich bei glibc-2.0 Systemen, bei denen keine der geladenen Libraries mit dem egcs gebaut wurden. Der egcs benötigt das Symbol __register_frame_info. Je nachdem gegen welche Libraries ein Programm nun gelinkt wird, wird es dem Programm hinzugefügt oder auch nicht.

glibc-2.1 basierte Systeme sind überhaupt nicht von dieser Tatsache betroffen, da die glibc-2.1 selbst dieses Problem korrekt behandelt.

SuSE Linux 6.2 ist von diesem Problem nicht betroffen. Allerdings ist zu beachten, daß Programme, die gegen die glibc-2.1 gelinkt wurden, grundsätzlich nicht auf glibc 2.0 basierten Systemen laufen. Wohl aber laufen glibc-2.0 gelinkte Programme auf glibc-2.1 basierenden Distributionen.

Lösung:

Installieren Sie bitte das Paket ftp://ftp.suse.com/pub/suse_update/suse61/a1/regframe.rpm auf der Linux Distribution, auf der Ihre Anwendung nicht läuft.

Dieses Paket stellt eine Library /lib/libregframe.so zur Verfügung. Diese muß zur Programmausführung zusätzlich geladen werden. Dazu gibt es mehrere Möglichkeiten:

  1. Sie laden die Library vorher mit LD_PRELOAD:
    	tux@erde > export LD_PRELOAD=/lib/libregframe.so
            tux@erde > runprogram
    	
    In diesem Fall können Sie kontrollieren, welche Programme wann mit der Library gestartet werden sollen. Der Nachteil ist, daß diese Lösung nicht bei SUID-Programmen funktioniert.
  2. Die Library wird grundsätzlich bei jeder Programmausführung geladen. Dazu erzeugen Sie eine Datei /etc/ld.so.preload. In dieser Datei steht in der ersten Zeile: /lib/libregframe.so. Sollte die Datei bereits mit Einträgen exitieren, fügen Sie den Namen der Library in der ersten Zeile durch Leerzeichen getrennt ein. Der Vorteil ist, daß die Library immer geladen wird, auch bei SUID-Programmen. Der Nachteil ist eben, sie wird wirklich immer geladen. Das sollte aber mit keinem Programm zu Schwierigkeiten führen.
  3. Wenn Sie auf Nummer sicher gehen wollen, linken Sie Ihr Programm gegen libregframe. Dazu installieren Sie das Paket auf Ihrem SuSE Linux, und fügen beim Linken folgenden Flag hinzu: -lregframe

    Danach müssen Sie nur noch sicherstellen, daß die Bibliothek libregframe.so auf dem Zielsystem auch installiert ist.

----------

Stichwörter: UNDEFINED SYMBOL: __REGISTER_FRAME_INFO, GLIBC, COMPILER, EGCS

----------

Kategorien: Entwicklungswerkzeuge

----------

Übersicht o Stichwortsuche o History o Versionen o Kategorien o Alle Artikel

----------

SDB-kukuk_regframe, Copyright SuSE GmbH, Nuremberg, Germany - Version: 25. May 1999
SuSE GmbH - Zuletzt generiert: 03. Oct 1999 22:37:23 by maddin with sdb_gen 1.00.0