surusoitto:/tmp/bin# ./irc ./irc: error in loading shared libraries : undefined symbol: __register_frame_infoOffenbar können Sie das Programm nicht ausführen.
Dieses ist das Resultat einer Mischung aus gcc und egcs, die Software compiliert haben. Offenbar wurde die libc mit dem gcc compiliert, was vernünftig ist. Allerdings wurde das Program, das Sie zu benutzen versuchen, mit em egcs auf einem System compiliert, dessen Bibliotheken ebenfalls mit dem egcs übersetzt wurden.
libgcc.a-Bibliothek
Funktionen zur Fehlerbehandlung für C++. Sie werden in jedes Programm
und jede dynamische Bibliothek aufgenommen, die vom egcs compiliert
wird, unabhängig davon, ob sie gebraucht werden oder nicht. Gcc macht das nicht.
Wenn Sie Ihre Systembibliothek libc oder
libstdc++ (die sogar vom egcs stammt) mit egcs
compilieren, werden sie diese Symbole enthalten und exportieren.
Jedes anschließend compilierte und dagegen gelinkte Programm wird
daher erwarten, daß diese Symbole verfügbar sind. Als Resultat davon
können Sie diese Programme auf keinem System verwenden, auf dem die
Systembibliotheken mit dem gcc compiliert wurden.
Lesen Sie dazu auch, was die glibc FAQ und Debian dazu sagen.
Eine Behelfslösung besteht darin, folgende Bibliothek libfixframeinfo.c vor den regulären zu laden. Compilieren Sie sie mit dem Befehl:
gcc -shared -o libfixframeinfo.so libfixframeinfo.cAnschließend laden Sie sie vor die üblichen mit:
export LD_PRELOAD=/foo/bar/libfixframeinfo.so
Betroffene Programme von SuSE 6.0 oder 6.1 werden übrigens normal auf Systemen mit der unstabilen glibc 2.1 laufen, da die Bibliothek diese Symbole beinhaltet.
Siehe auch bei CHIP.