Hallo zusammen, vielleicht ist es Anderen auch bei SuSE 10.3 64 Bit bereits passiert: Pakete, wie z.B. iscan lassen sich problemlos mit YAST installieren, brechen aber beim Start mit der Meldung /usr/local/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by iscan) ab. Dieses Problem wird auch in vielen Foren erwähnt - nicht nur bei SuSE, ich habe jedoch keine brauchbare Lösung gefunden. Weiß jemand, was hier los ist und wie man das Problem behebt? Vielen Dank im Voraus Detlev Jäckel -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
On Thu, 28 Feb 2008 18:20:48 +0100, Detlev Jäckel wrote:
vielleicht ist es Anderen auch bei SuSE 10.3 64 Bit bereits passiert: Pakete, wie z.B. iscan lassen sich problemlos mit YAST installieren, brechen aber beim Start mit der Meldung /usr/local/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by iscan)
Weiß jemand, was hier los ist und wie man das Problem behebt?
Du hast in /usr/local/lib eine libstdc++, also die C++ Laufzeitbibliothek. Die hat da nichts zu suchen! Systemweit genutzte Bibliotheken, die auch von der Distribution zur Verfügung gestellt werden, gehören, wenn überhaupt, in einen Pfad, der nicht in /etc/ld.so.conf steht! Lösch einfach die Bibliothek, ruf /sbin/ldconfig auf und der Spuk ist verschwunden. BTW, das GLIBCXX_3.4.9 ist eine sogenannte Symbolversion. Der Linker bietet die Möglichkeit, einem oder mehreren Symbolen (Funktionen und Variablen) eine Version zu geben. Wenn nun z.B. neue Funktionen hinzukommen, bekommen diese eine andere Version. Dies erlaubt es, trotz Änderungen in der Bibliothek die Versionsnummer der Bibliothek selbst unverändert zu lassen. Die glibc z.B. macht davon massiven Gebrauch. Ansehen kannst Du dir die Versionen z.B. indem Du dir mit 'objdump -T' die Symbole ausgeben lässt. Hier ein Teil des Ergebnisses von 'objdump -T --demangle /usr/lib/libstdc++.so.5|cut -d' ' -f9-': GLIBCPP_3.2 typeinfo for std::basic_istream<char, std::char_traits<char> > GLIBCPP_3.2 std::invalid_argument::invalid_argument(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) GLIBCPP_3.2 std::basic_streambuf<char, std::char_traits<char> >::uflow() CXXABI_1.2 __gnu_cxx::__verbose_terminate_handler() GLIBCPP_3.2 std::length_error::length_error(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) CXXABI_1.2.2 __cxxabiv1::__class_type_info::~__class_type_info() GLIBCPP_3.2 non-virtual thunk to std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::~basic_stringstream() Und in der ersten Spalte siehst Du die Symbolversionen. Philipp -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Donnerstag, 28. Februar 2008 schrieb Philipp Thomas:
On Thu, 28 Feb 2008 18:20:48 +0100, Detlev Jäckel wrote:
vielleicht ist es Anderen auch bei SuSE 10.3 64 Bit bereits passiert: Pakete, wie z.B. iscan lassen sich problemlos mit YAST installieren, brechen aber beim Start mit der Meldung /usr/local/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by iscan)
Weiß jemand, was hier los ist und wie man das Problem behebt?
Du hast in /usr/local/lib eine libstdc++, also die C++ Laufzeitbibliothek. Die hat da nichts zu suchen! Systemweit genutzte Bibliotheken, die auch von der Distribution zur Verfügung gestellt werden, gehören, wenn überhaupt, in einen Pfad, der nicht in /etc/ld.so.conf steht! Lösch einfach die Bibliothek, ruf /sbin/ldconfig auf und der Spuk ist verschwunden.
BTW, das GLIBCXX_3.4.9 ist eine sogenannte Symbolversion. Der Linker bietet die Möglichkeit, einem oder mehreren Symbolen (Funktionen und Variablen) eine Version zu geben. Wenn nun z.B. neue Funktionen hinzukommen, bekommen diese eine andere Version. Dies erlaubt es, trotz Änderungen in der Bibliothek die Versionsnummer der Bibliothek selbst unverändert zu lassen. Die glibc z.B. macht davon massiven Gebrauch. Ansehen kannst Du dir die Versionen z.B. indem Du dir mit 'objdump -T' die Symbole ausgeben lässt. Hier ein Teil des Ergebnisses von 'objdump -T --demangle /usr/lib/libstdc++.so.5|cut -d' ' -f9-':
GLIBCPP_3.2 typeinfo for std::basic_istream<char, std::char_traits<char> > GLIBCPP_3.2 std::invalid_argument::invalid_argument(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) GLIBCPP_3.2 std::basic_streambuf<char, std::char_traits<char> >::uflow() CXXABI_1.2 __gnu_cxx::__verbose_terminate_handler() GLIBCPP_3.2 std::length_error::length_error(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) CXXABI_1.2.2 __cxxabiv1::__class_type_info::~__class_type_info() GLIBCPP_3.2 non-virtual thunk to std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::~basic_stringstream()
Und in der ersten Spalte siehst Du die Symbolversionen.
Philipp
Vielen Dank für die Antwort. Jetzt klappt es. Detlev Jäckel -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (2)
-
Detlev Jäckel
-
Philipp Thomas