Hallo Forumsgemeinde,
ich habe ein Problem mit einem uralten System (SUSE 10.0, linux 2.6.13-15.18-smp). Aber für mich tut es seinen Zweck (ist ohnehin nur das Zweitsystem), deshalb bitte keine Ratschläge, einfach neu zu installieren.
Für diese Version gibt es schon ewig keine neuen Pakete mehr. Deswegen installiere ich Software immer aus dem Source-Code, also mit configure - make - make install. Sie ist dann natürlich beim System (yast2) nicht bekannt. Ich selbst habe keine nennenswerte Ahnung vom Programmieren.
Das System lief und läuft eigentlich ganz gut. Aber seit der Installation von ntfs-3g_ntfsprogs-2013.1.13 habe ich ein großes Problem, weil ich nichts mehr neu übersetzen kann. Kein Compiler funktioniert mehr, weder gcc noch cc noch g++ noch c++, und sie haben alle selbst bei einem einfachen Programm hello.c mit dem Text
dieselben oder jedenfalls ähnliche Fehlermeldungen. Bei gcc und cc ist das
und bei g++ und c++
ldd `which gcc` ergibt übrigens (falls das von Belang sein sollte)
/lib/libc.so.6 hat 4070406 Bytes. Nun habe ich etwas rumprobiert und die /lib/libc.so.6 zu einem anderen File /lib/libc-2.3.5.so mit 1405291 Bytes verlinkt, das bereits von /lib/tls/libc.so.6 verlinkt war, aber es hat (wenig überraschend) nichts verbessert. Ich habe inzwischen den Verdacht, dass libc.so.6 nicht die eigentliche Ursache des Problems ist, sondern nur erst dort das Symptom auftritt.
Meine Frage ist nun, wie ich systematisch herausfinden kann, wo der Fehler liegt bzw. welche Libraries und falschen Links bei der Übersetzung des Programms hello.c überhaupt involviert sein KÖNNTEN. So wahnsinnig viele können es ja eigentlich bei einem so kurzen Programm nicht sein. Der ausführlichere Output bei Übersetzung mit gcc -v hello.c ist übrigens
Ist collect2 (http://gcc.gnu.org/onlinedocs/gccint/Collect2.html), was ja anscheinend nur eine andere Bezeichnung für ld ist, das Problem? Wie geht man da bei der Fehlersuche am geschicktesten vor? Ich bin mir ziemlich sicher, dass es sich nur um eine Kleinigkeit handelt.
Danke im Voraus für jeden hilfreichen Tip und Gruß
Bernd
ich habe ein Problem mit einem uralten System (SUSE 10.0, linux 2.6.13-15.18-smp). Aber für mich tut es seinen Zweck (ist ohnehin nur das Zweitsystem), deshalb bitte keine Ratschläge, einfach neu zu installieren.
Für diese Version gibt es schon ewig keine neuen Pakete mehr. Deswegen installiere ich Software immer aus dem Source-Code, also mit configure - make - make install. Sie ist dann natürlich beim System (yast2) nicht bekannt. Ich selbst habe keine nennenswerte Ahnung vom Programmieren.
Das System lief und läuft eigentlich ganz gut. Aber seit der Installation von ntfs-3g_ntfsprogs-2013.1.13 habe ich ein großes Problem, weil ich nichts mehr neu übersetzen kann. Kein Compiler funktioniert mehr, weder gcc noch cc noch g++ noch c++, und sie haben alle selbst bei einem einfachen Programm hello.c mit dem Text
Code:
include <stdio.h>
int main() { printf("Hello world\n"); }
dieselben oder jedenfalls ähnliche Fehlermeldungen. Bei gcc und cc ist das
Code:
/lib/libc.so.6: undefined reference to `_dl_init_next@GLIBC_2.0'
/lib/libc.so.6: undefined reference to `_dl_lazy@GLIBC_2.1.1'
/lib/libc.so.6: undefined reference to `_dl_dst_substitute@GLIBC_2.1.1'
/lib/libc.so.6: undefined reference to `_dl_relocate_object@GLIBC_2.0'
/lib/libc.so.6: undefined reference to `__libc_enable_secure@GLIBC_2.0'
/lib/libc.so.6: undefined reference to `_dl_catch_error@GLIBC_2.0'
/lib/libc.so.6: undefined reference to `_dl_platformlen@GLIBC_2.1.1'
/lib/libc.so.6: undefined reference to `_dl_dst_count@GLIBC_2.1.1'
/lib/libc.so.6: undefined reference to `_dl_initial_searchlist@GLIBC_2.1'
/lib/libc.so.6: undefined reference to `_dl_start_profile@GLIBC_2.1'
/lib/libc.so.6: undefined reference to `_dl_lookup_symbol@GLIBC_2.0'
/lib/libc.so.6: undefined reference to `_dl_loaded@GLIBC_2.1'
/lib/libc.so.6: undefined reference to `_dl_origin_path@GLIBC_2.1.1'
/lib/libc.so.6: undefined reference to `_dl_map_object@GLIBC_2.0'
/lib/libc.so.6: undefined reference to `_dl_check_all_versions@GLIBC_2.0'
/lib/libc.so.6: undefined reference to `_dl_main_searchlist@GLIBC_2.1'
/lib/libc.so.6: undefined reference to `_dl_debug_impcalls@GLIBC_2.0'
/lib/libc.so.6: undefined reference to `_dl_profile@GLIBC_2.1'
/lib/libc.so.6: undefined reference to `_dl_debug_state@GLIBC_2.0'
/lib/libc.so.6: undefined reference to `_dl_debug_message@GLIBC_2.0'
/lib/libc.so.6: undefined reference to `_dl_unload_cache@GLIBC_2.1'
/lib/libc.so.6: undefined reference to `_dl_signal_error@GLIBC_2.0'
/lib/libc.so.6: undefined reference to `_dl_map_object_deps@GLIBC_2.0'
/lib/libc.so.6: undefined reference to `_dl_profile_map@GLIBC_2.1'
/lib/libc.so.6: undefined reference to `_dl_profile_output@GLIBC_2.1'
/lib/libc.so.6: undefined reference to `_dl_fpu_control@GLIBC_2.1'
/lib/libc.so.6: undefined reference to `_dl_debug_initialize@GLIBC_2.0'
/lib/libc.so.6: undefined reference to `_dl_global_scope_alloc@GLIBC_2.1'
collect2: ld gab 1 als Ende-Status zurück
und bei g++ und c++
Code:
/lib/libc.so.6: undefined reference to `_dl_init_next@GLIBC_2.0'
/lib/libc.so.6: undefined reference to `_dl_lazy@GLIBC_2.1.1'
/lib/libc.so.6: undefined reference to `_dl_dst_substitute@GLIBC_2.1.1'
/usr/local/lib/gcc/i686-pc-linux-gnu/4.2.4/../../../libstdc++.so: undefined reference to `strtold_l@GLIBC_2.3'
/lib/libc.so.6: undefined reference to `_dl_relocate_object@GLIBC_2.0'
/lib/libc.so.6: undefined reference to `__libc_enable_secure@GLIBC_2.0'
/lib/libc.so.6: undefined reference to `_dl_catch_error@GLIBC_2.0'
/usr/local/lib/gcc/i686-pc-linux-gnu/4.2.4/../../../libstdc++.so: undefined reference to `putwc@GLIBC_2.2'
/lib/libc.so.6: undefined reference to `_dl_platformlen@GLIBC_2.1.1'
/lib/libc.so.6: undefined reference to `_dl_dst_count@GLIBC_2.1.1'
/lib/libc.so.6: undefined reference to `_dl_initial_searchlist@GLIBC_2.1'
/lib/libc.so.6: undefined reference to `_dl_start_profile@GLIBC_2.1'
/lib/libc.so.6: undefined reference to `_dl_lookup_symbol@GLIBC_2.0'
/lib/libc.so.6: undefined reference to `_dl_loaded@GLIBC_2.1'
/lib/libc.so.6: undefined reference to `_dl_origin_path@GLIBC_2.1.1'
/lib/libc.so.6: undefined reference to `_dl_map_object@GLIBC_2.0'
/lib/libc.so.6: undefined reference to `_dl_check_all_versions@GLIBC_2.0'
/lib/libc.so.6: undefined reference to `_dl_main_searchlist@GLIBC_2.1'
/lib/libc.so.6: undefined reference to `_dl_debug_impcalls@GLIBC_2.0'
/usr/local/lib/gcc/i686-pc-linux-gnu/4.2.4/../../../libgcc_s.so: undefined reference to `dl_iterate_phdr@GLIBC_2.2.4'
/lib/libc.so.6: undefined reference to `_dl_profile@GLIBC_2.1'
/lib/libc.so.6: undefined reference to `_dl_debug_state@GLIBC_2.0'
/usr/local/lib/gcc/i686-pc-linux-gnu/4.2.4/../../../libstdc++.so: undefined reference to `__fxstat64@GLIBC_2.2'
/usr/local/lib/gcc/i686-pc-linux-gnu/4.2.4/../../../libstdc++.so: undefined reference to `getwc@GLIBC_2.2'
/lib/libc.so.6: undefined reference to `_dl_debug_message@GLIBC_2.0'
/lib/libc.so.6: undefined reference to `_dl_unload_cache@GLIBC_2.1'
/usr/local/lib/gcc/i686-pc-linux-gnu/4.2.4/../../../libstdc++.so: undefined reference to `__strftime_l@GLIBC_2.3'
/lib/libc.so.6: undefined reference to `_dl_signal_error@GLIBC_2.0'
/usr/local/lib/gcc/i686-pc-linux-gnu/4.2.4/../../../libstdc++.so: undefined reference to `ungetwc@GLIBC_2.2'
/lib/libc.so.6: undefined reference to `_dl_map_object_deps@GLIBC_2.0'
/usr/local/lib/gcc/i686-pc-linux-gnu/4.2.4/../../../libstdc++.so: undefined reference to `__wcsftime_l@GLIBC_2.3'
/lib/libc.so.6: undefined reference to `_dl_profile_map@GLIBC_2.1'
/lib/libc.so.6: undefined reference to `_dl_profile_output@GLIBC_2.1'
/usr/local/lib/gcc/i686-pc-linux-gnu/4.2.4/../../../libstdc++.so: undefined reference to `__nl_langinfo_l@GLIBC_2.2'
/usr/local/lib/gcc/i686-pc-linux-gnu/4.2.4/../../../libstdc++.so: undefined reference to `__uselocale@GLIBC_2.3'
/lib/libc.so.6: undefined reference to `_dl_fpu_control@GLIBC_2.1'
/lib/libc.so.6: undefined reference to `_dl_debug_initialize@GLIBC_2.0'
/lib/libc.so.6: undefined reference to `_dl_global_scope_alloc@GLIBC_2.1'
collect2: ld gab 1 als Ende-Status zurück
ldd `which gcc` ergibt übrigens (falls das von Belang sein sollte)
Code:
linux-gate.so.1 => (0xffffe000)
libc.so.6 => /lib/tls/libc.so.6 (0x40042000)
/lib/ld-linux.so.2 (0x40000000)
/lib/libc.so.6 hat 4070406 Bytes. Nun habe ich etwas rumprobiert und die /lib/libc.so.6 zu einem anderen File /lib/libc-2.3.5.so mit 1405291 Bytes verlinkt, das bereits von /lib/tls/libc.so.6 verlinkt war, aber es hat (wenig überraschend) nichts verbessert. Ich habe inzwischen den Verdacht, dass libc.so.6 nicht die eigentliche Ursache des Problems ist, sondern nur erst dort das Symptom auftritt.
Meine Frage ist nun, wie ich systematisch herausfinden kann, wo der Fehler liegt bzw. welche Libraries und falschen Links bei der Übersetzung des Programms hello.c überhaupt involviert sein KÖNNTEN. So wahnsinnig viele können es ja eigentlich bei einem so kurzen Programm nicht sein. Der ausführlichere Output bei Übersetzung mit gcc -v hello.c ist übrigens
Code:
Es werden eingebaute Spezifikationen verwendet.
Ziel: i686-pc-linux-gnu
Konfiguriert mit: ./configure
Thread-Modell: posix
gcc-Version 4.2.4
/usr/local/libexec/gcc/i686-pc-linux-gnu/4.2.4/cc1 -quiet -v hello.c -quiet -dumpbase hello.c -mtune=generic -auxbase hello -version -o /tmp/ccKmxGTe.s
nicht vorhandenes Verzeichnis »NONE/include« wird ignoriert
nicht vorhandenes Verzeichnis »/usr/local/lib/gcc/i686-pc-linux-gnu/4.2.4/../../../../i686-pc-linux-gnu/include« wird ignoriert
#include "..." - Suche beginnt hier:
#include <...> - Suche beginnt hier:
/usr/local/include
/usr/local/lib/gcc/i686-pc-linux-gnu/4.2.4/include
/usr/include
Ende der Suchliste.
GNU C Version 4.2.4 (i686-pc-linux-gnu)
kompiliert von GNU-C-Version 4.2.4.
GGC-Heuristik: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 268b75e84521c58dfda825bb0e9def99
as -V -Qy -o /tmp/ccTo4o5p.o /tmp/ccKmxGTe.s
GNU assembler version 2.16.91.0.2 (i586-suse-linux) using BFD version 2.16.91.0.2 20050720 (SuSE Linux)
/usr/local/libexec/gcc/i686-pc-linux-gnu/4.2.4/collect2 --eh-frame-hdr -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 /usr/lib/crt1.o /usr/lib/crti.o /usr/local/lib/gcc/i686-pc-linux-gnu/4.2.4/crtbegin.o -L/usr/local/lib/gcc/i686-pc-linux-gnu/4.2.4 -L/usr/local/lib/gcc/i686-pc-linux-gnu/4.2.4/../../.. /tmp/ccTo4o5p.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/local/lib/gcc/i686-pc-linux-gnu/4.2.4/crtend.o /usr/lib/crtn.o
/lib/libc.so.6: undefined reference to `_dl_init_next@GLIBC_2.0'
/lib/libc.so.6: undefined reference to `_dl_lazy@GLIBC_2.1.1'
/lib/libc.so.6: undefined reference to `_dl_dst_substitute@GLIBC_2.1.1'
/lib/libc.so.6: undefined reference to `_dl_relocate_object@GLIBC_2.0'
/lib/libc.so.6: undefined reference to `__libc_enable_secure@GLIBC_2.0'
/lib/libc.so.6: undefined reference to `_dl_catch_error@GLIBC_2.0'
/lib/libc.so.6: undefined reference to `_dl_platformlen@GLIBC_2.1.1'
/lib/libc.so.6: undefined reference to `_dl_dst_count@GLIBC_2.1.1'
/lib/libc.so.6: undefined reference to `_dl_initial_searchlist@GLIBC_2.1'
/lib/libc.so.6: undefined reference to `_dl_start_profile@GLIBC_2.1'
/lib/libc.so.6: undefined reference to `_dl_lookup_symbol@GLIBC_2.0'
/lib/libc.so.6: undefined reference to `_dl_loaded@GLIBC_2.1'
/lib/libc.so.6: undefined reference to `_dl_origin_path@GLIBC_2.1.1'
/lib/libc.so.6: undefined reference to `_dl_map_object@GLIBC_2.0'
/lib/libc.so.6: undefined reference to `_dl_check_all_versions@GLIBC_2.0'
/lib/libc.so.6: undefined reference to `_dl_main_searchlist@GLIBC_2.1'
/lib/libc.so.6: undefined reference to `_dl_debug_impcalls@GLIBC_2.0'
/lib/libc.so.6: undefined reference to `_dl_profile@GLIBC_2.1'
/lib/libc.so.6: undefined reference to `_dl_debug_state@GLIBC_2.0'
/lib/libc.so.6: undefined reference to `_dl_debug_message@GLIBC_2.0'
/lib/libc.so.6: undefined reference to `_dl_unload_cache@GLIBC_2.1'
/lib/libc.so.6: undefined reference to `_dl_signal_error@GLIBC_2.0'
/lib/libc.so.6: undefined reference to `_dl_map_object_deps@GLIBC_2.0'
/lib/libc.so.6: undefined reference to `_dl_profile_map@GLIBC_2.1'
/lib/libc.so.6: undefined reference to `_dl_profile_output@GLIBC_2.1'
/lib/libc.so.6: undefined reference to `_dl_fpu_control@GLIBC_2.1'
/lib/libc.so.6: undefined reference to `_dl_debug_initialize@GLIBC_2.0'
/lib/libc.so.6: undefined reference to `_dl_global_scope_alloc@GLIBC_2.1'
collect2: ld gab 1 als Ende-Status zurück
Ist collect2 (http://gcc.gnu.org/onlinedocs/gccint/Collect2.html), was ja anscheinend nur eine andere Bezeichnung für ld ist, das Problem? Wie geht man da bei der Fehlersuche am geschicktesten vor? Ich bin mir ziemlich sicher, dass es sich nur um eine Kleinigkeit handelt.
Danke im Voraus für jeden hilfreichen Tip und Gruß
Bernd