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 sourcen

    mkdir 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 problemen

    und 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?


Anmelden zum Antworten