glibc und nptl
-
wie kann ich die glibc mit dem nptl add on compilieren? ich bekomm immer fehler, dass der assembler keine CFI instruktionen unterstützt oder der compiler das visibility attribute nicht kennt.
hab das mit gcc 3.3.2 und dem neuen gcc 3.4 prerelease getestet. binutils sind 2.14. glibc ist 2.3.2 und die vom cvs. immer das gleiche problem. weiß jemand eine lösung? danke
-
gutes timing .. gestern hab ichs zum ersten mal hinbekommen ^^
kleine Warnung im voraus das wird auffwendig
zuerst einmal was du brauchst :
- nen aktuellen 2.6er kernel
- binutils cvs HEAD ( hab was davon gelesen das die neuesten versionen auch gehen habs aber nich probiert
)
cvs -z 9 -d :pserver:anoncvs@sources.redhat.com:/cvs/src login <enter> cvs -z 9 -d :pserver:anoncvs@sources.redhat.com:/cvs/src co binutils
- glibc cvs HEAD
cvs -z 9 -d :pserver:anoncvs@sources.redhat.com:/cvs/glibc login <enter> cvs -z 9 -d :pserver:anoncvs@sources.redhat.com:/cvs/glibc co libc
- gcc gcc-3_3-branch ( HEAD lies sich bei mir nich kompilieren und 3_4 hab ich nich probiert :P² )
export CVS_RSH=ssh cvs -qz9 -d :ext:anoncvs@savannah.gnu.org:/cvsroot/gcc co -r gcc-3_3-branch gcc
auf zum installieren
( die C und LDFLAGS sind optional und die die ICH benutze. höchstwrscheinlich nicht optimal für andere rechner besonders das -march=athlon-tbird und -m3dnow sind ein bischen gefährlich)
zuerst binutils mit altem compiler compilieren und installieren
./configure --prefix=/usr/ --sysconfdir=/etc/ make CFLAGS=' -O2 -fomit-frame-pointer -march=athlon-tbird -mmmx -m3dnow ' CXXFLAGS=' -O2 -fomit-frame-pointer -march=athlon-tbird -mmmx -m3dnow ' LDFLAGS=' -O3 -s ' make install
dann gcc:
mkdir build cd build ../configure --prefix=/usr/ --enable-threads=posix --with-cpu=athlon-tbird --with-arch=athlon-tbird --enable-languages=c,c++,objc --disable-libgcj # Achtung damit wird der java ada unf fotran compiler nicht installiert ! # longest commandline evar 8-) make CFLAGS=' -O2 -mmmx -m3dnow -march=athlon-tbird -fomit-frame-pointer ' CXXFLAGS='-O2 -mmmx -m3dnow -march=athlon-tbird -fomit-frame-pointer ' CFLAGS_FOR_BUILD='-O2 -mmmx -m3dnow -march=athlon-tbird -fomit-frame-pointer ' LIBCFLAGS=' -O2 -mmmx -m3dnow -march=athlon-tbird -fomit-frame-pointer ' CXXFLAGS_FOR_BUILD=' -O2 -mmmx -m3dnow -march=athlon-tbird -fomit-frame-pointer -fno-implicit-templates ' LIBCXXCFLAGS=' -O2 -mmmx -m3dnow -march=athlon-tbird -fomit-frame-pointer -fno-implicit-templates ' BOOT_CFLAGS=' -O2 -mmmx -m3dnow -march=athlon-tbird -fomit-frame-pointer ' STAGE1_CFLAGS=' -O2 -mmmx -m3dnow -march=athlon-tbird -fomit-frame-pointer ' bootstrap-lean make install
und dann glibc
#jetzt brauchst du die 2.6er kernel sourcenmkdir build cd build ../configure --prefix=/usr/ --sysconfdir=/etc/ --disable-more-warnings --disable-debug CFLAGS=' -O2 -fomit-frame-pointer -march=athlon-tbird -mmmx -m3dnow ' CXXFLAGS=' -O2 -fomit-frame-pointer -march=athlon-tbird -mmmx -m3dnow' LDFLAGS=' -O3 ' --enable-omitfp --enable-add-ons --with-tls --with-headers=/root/linux-2.6/include/ #bei ---with-headers= den phad zu deinen kernel sourcen headern einfügen make make install
und als letztes noch den kernel neu kompilieren ...
make xconfig
bla ... bla...vielleicht zwischen den einzellnen schritten jeweils noch ldconfig ausführen kann nie schaden
neu starten starten und beten ...
spuck out
-
danke für deine beschreibung. war aber leider etwas zu spät. hab s auch mit dem cvs von den binutls hinbekommen. leider is da aber scheinbar ein bug im gcc und/oder dem configure script der glibc was das visibility attribute betrifft. da muss man die configure datei der nptl etwas ändern, damit er das übersieht. das compilieren klappt dann.
hab s jetz glibc-cvs mit binutils-cvs und gcc-3.3.2 compiliert. und es geht bis jetz ganz gut. hab davor die gleiche libc verwendet nur mit linuxthreads. programme, die mit der linuxthreads-glibc compiliert wurden funktionieren auch problemlos mit den nptl; teilweise sogar besser. der vorteil is, dass bei ps die threads nicht mehr zu sehen sind. einen großen geschwindigkeitsvorteil hab ich aber nicht erkennen können. du schon?
-
Also einfach so nach /usr/ installieren sollte man nicht machen. Selbstkompilierte Programme gehoeren nach /usr/local/
-
uh .. weiha .. das forum handled überbreite kommentare schlecht
egal ... vielleicht hilfts noch jemand anderem weiter
vielleicht bilde ichs mir nur ein aber es scheint das sich viele programme jetzt
etwas smoother sind ...ich hatte früher immer starke probleme wine und spielen im zusammenhang
mit threads .. vielleicht hat sich ja da was gebessert ...habs aber noch nicht
probiert ...Was ich noch vergessen habe. Die configure scripte müssen in einigen fällen
mit ziemlich alten autoconf versionen generiert worden sein, dadurch
akzeptieren sie die CFLAGS nicht. ein "autoconf -f" hilft da manchmal ab.und sg1: ich weis .. aber im allgemeinen weis ich auch was ich tue
ich hab keinen besonderen bedarf mehrere versionen des selben programms
oder lib rumliegen zu haben besonders bei solchen monstern wie libc und gcc
... das führt nur wieder zu anderen problemenund um pakete von meiner distribution brauch ich mich auch nicht zu
kümmern für slack 8 gibts sowieso keine mehr
-
hab grad ein massives problem: die neue glibc cvs funktioniert nicht mehr. es kommen andauern segfaults nachdem ein programm abgelaufen ist. hat das noch wer bemerkt?