Hi!
Ich habe KDE bereits installiert (auf einem LFS-System, also alles selbst kompiliert). Jetzt wollte ich KDE neu kompilieren um den Trick mit objprelink mal auszuprobieren, erhalte aber bei kdelibs-2.1.2 folgenden Fehler:
<font face="Courier New">...
make[<!--no-->3<!--no-->]: Entering directory `/usr/src/kdelibs-2.1.2/khtml'
/bin/sh ../libtool --mode=link --tag=CXX g++ -O2 -fno-exceptions -fno-check-new
-Wall -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -Wno-lo
ng-long -Wnon-virtual-dtor -fno-builtin -march=i686 -O3 -fexpensive-optimization
s -frtti -DQT_CLEAN_NAMESPACE -DQT_NO_COMPAT -DQT_NO_ASCII_CAST -o libkhtml.la
-rpath /opt/kde/lib -version-info 3:0 -module -no-undefined -L/usr/X11R6/lib -L
/usr/lib/qt/lib -L/opt/kde/lib khtmlview.lo khtml_part.lo khtml_run.lo khtml_fa
ctory.lo khtml_settings.lo khtml_events.lo khtml_find.lo khtml_ext.lo khtml_page
cache.lo libkhtml_la_meta_unload.lo ./xml/libkhtmlxml.la ./html/libkhtmlhtml.la
./rendering/libkhtmlrender.la ./css/libkhtmlcss.la ./misc/libkhtmlmisc.la ./dom
/libkhtmldom.la ./java/libkjava.la ../kio/libkio.la ../kparts/libkparts.la ../kf
ile/libkfile.la ../kssl/libkssl.la
g++ -shared -nostdlib /usr/lib/crti.o /usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.3/
crtbeginS.o .libs/khtmlview.o .libs/khtml_part.o .libs/khtml_run.o .libs/khtml_
factory.o .libs/khtml_settings.o .libs/khtml_events.o .libs/khtml_find.o .libs/k
html_ext.o .libs/khtml_pagecache.o .libs/libkhtml_la_meta_unload.o -Wl,--whole-a
rchive ./xml/.libs/libkhtmlxml.a ./html/.libs/libkhtmlhtml.a ./rendering/.libs/l
ibkhtmlrender.a ./css/.libs/libkhtmlcss.a ./misc/.libs/libkhtmlmisc.a ./dom/.lib
s/libkhtmldom.a -Wl,--no-whole-archive -L/usr/X11R6/lib -L/usr/lib/qt/lib -L/op
t/kde/lib ./xml/.libs/libkhtmlxml.a -L/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.3
-L/usr/src/gcc-build/i686-pc-linux-gnu/libstdc++-v3/src -L/usr/src/gcc-build/i68
6-pc-linux-gnu/libstdc++-v3/src/.libs -lm -lm -lm -L/usr/src/gcc-build/gcc -lgcc
_s -lgcc -lc -lgcc_s -lgcc -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc -lm -lc -lgcc ./h
tml/.libs/libkhtmlhtml.a -lm -lm -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc -lm -lgcc_s
-lgcc -lc -lgcc_s -lgcc -lm -lc -lgcc ./rendering/.libs/libkhtmlrender.a -lm -l
m -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc -lm -l
c -lgcc ./css/.libs/libkhtmlcss.a -lm -lm -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc -l
m -lgcc_s -lgcc -lc -lgcc_s -lgcc -lm -lc -lgcc ./misc/.libs/libkhtmlmisc.a -lm
-lm -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc -lm
-lc -lgcc ./dom/.libs/libkhtmldom.a -lm -lm -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc
-lm -lgcc_s -lgcc -lc -lgcc_s -lgcc -lm -lc -lgcc ./java/.libs/libkjava.so -L/us
r/src/kdelibs-2.1.2/kio/.libs -L/usr/src/kdelibs-2.1.2/kdeui/.libs -L/usr/src/kd
elibs-2.1.2/kdesu/.libs -L/usr/src/kdelibs-2.1.2/kdecore/.libs -L/usr/src/kdelib
s-2.1.2/dcop/.libs -L/usr/lib -L/usr/local/lib ../kio/.libs/libkio.so ../kparts/
.libs/libkparts.so -L/usr/src/kdelibs-2.1.2/kfile/.libs ../kfile/.libs/libkfile.
so ../kssl/.libs/libkssl.so /usr/local/lib/libstdc++.so -lm -lgcc -lc -lgcc
/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.3/crtendS.o /usr/lib/crtn.o -Wl,
-soname -Wl,libkhtml.so.3 -o .libs/libkhtml.so.3.0.0
/usr/bin/ld: .libs/libkhtml.so.3.0.0: undefined versioned symbol name __register
_frame_info@@GLIBC_2.0
/usr/bin/ld: failed to set dynamic section sizes: Bad value
collect2: ld returned 1 exit status
make[<!--no-->3<!--no-->]: *** [libkhtml.la] Error 1
make[<!--no-->3<!--no-->]: Leaving directory `/usr/src/kdelibs-2.1.2/khtml'
make[<!--no-->2<!--no-->]: *** [all-recursive] Error 1
make[<!--no-->2<!--no-->]: Leaving directory `/usr/src/kdelibs-2.1.2/khtml'
make[<!--no-->1<!--no-->]: *** [all-recursive] Error 1
make[<!--no-->1<!--no-->]: Leaving directory `/usr/src/kdelibs-2.1.2'
make: *** [<!--no-->all-recursive-am<!--no-->] Error 2
</font><!--fixed-->
Ich habe leider absolut keine Ahnung was das zu bedeuten hat. Letztes mal als ich KDE kompiliert habe (die selbe Version) gab's keine Probleme, und ich habe seitdem nichts wesentliches am System verändert (immernoch der selbe Compiler (gcc-2.95.3), die selbe glibc (2.2.2) usw.).
Mit objprelink kann das Problem auch nicht zu tun haben; der Fehler tritt schon beim ersten "make" auf, bevor objprelink überhaupt zum Einsatz kommt.
Ich hoffe jemand von euch kann mir hier weiterhelfen...
Danke,
Dominic
Fehler beim Kompilieren von KDE
Re: Fehler beim Kompilieren von KDE
Hi
Wo dein Problem liegt, weiss ich nicht (das weiss ich selten;)) aber versuch mal folgendes:
cd khtml; make clean ; cd .. ; make
Wenn das nicht tut versuch ein
make distclean ; make
oder besser ein
rm -rf kdelibs-2.1.2 ; tar xzvf kdelibs-2.1.2.tar.gz ; cd kdelibs-2.1.2 ; ./configure ; make
einfacher geht das mit ner CVS Version:
make -f admin/Makefile.common cvs-clean ; make -f Makefile.cvs ; ./configure ; make
Kurzer Tip noch: hast du damals beim komplieren von QT den gleichen Compiler verwendet?
CU
Andi
Wo dein Problem liegt, weiss ich nicht (das weiss ich selten;)) aber versuch mal folgendes:
cd khtml; make clean ; cd .. ; make
Wenn das nicht tut versuch ein
make distclean ; make
oder besser ein
rm -rf kdelibs-2.1.2 ; tar xzvf kdelibs-2.1.2.tar.gz ; cd kdelibs-2.1.2 ; ./configure ; make
einfacher geht das mit ner CVS Version:
make -f admin/Makefile.common cvs-clean ; make -f Makefile.cvs ; ./configure ; make
Kurzer Tip noch: hast du damals beim komplieren von QT den gleichen Compiler verwendet?
CU
Andi
Re: Fehler beim Kompilieren von KDE
Sieht aus, als ob ein alter Verweis auf glibc-2.0 drin wäre. Ich würde das Projekt auch noch mal aufräumen, wie Andi ausgeführt hat, oder die Archive komplett neu auspacken.
Re: Fehler beim Kompilieren von KDE
Hmm, ich habe schon versucht das Archiv neu auszupacken usw., aber ohne Erfolg. Außerdem habe ich versucht kdelibs-2.1.1 anstelle von 2.1.2 zu verwenden, aber die Kompilierung scheitert an der selben Stelle.
Übrigens habe ich auf diesem LFS-System von Anfang an immer den selben Compiler verwendet, und die glibc habe ich auch nie upgedated.
Und ich glaube, daß "__register_frame_info@@GLIBC_2.0" eigentlich definiert sein müsste. In /lib und /usr/lib gibt es hunderte von Bibliotheken die auf dieses Symbol verweisen.
# nm /lib/* /usr/lib/* 2>/dev/null | grep "__register_frame_info@@GLIBC_2\.0" | wc -l
369
Also warum findet khtml dieses Symbol nicht? Und wie finde ich überhaupt heraus wo es definiert ist?
Danke,
Dominic
Übrigens habe ich auf diesem LFS-System von Anfang an immer den selben Compiler verwendet, und die glibc habe ich auch nie upgedated.
Und ich glaube, daß "__register_frame_info@@GLIBC_2.0" eigentlich definiert sein müsste. In /lib und /usr/lib gibt es hunderte von Bibliotheken die auf dieses Symbol verweisen.
# nm /lib/* /usr/lib/* 2>/dev/null | grep "__register_frame_info@@GLIBC_2\.0" | wc -l
369
Also warum findet khtml dieses Symbol nicht? Und wie finde ich überhaupt heraus wo es definiert ist?
Danke,
Dominic