Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Systemumstellung auf gcc 3.4(.4)
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

Goto page 1, 2, 3, 4, 5, 6  Next  
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German)
View previous topic :: View next topic  
Author Message
amne
Bodhisattva
Bodhisattva


Joined: 17 Nov 2002
Posts: 6377
Location: Graz / EU

PostPosted: Thu Dec 01, 2005 6:16 pm    Post subject: Systemumstellung auf gcc 3.4(.4) Reply with quote

Es ist soweit, gcc 3.3.4 wird auf x86 stable, siehe GCC-3.4 will be marked stable in ~1 hour on x86 und die dortigen Links.

Die reine Installation von gcc 3.4.4 hat keinen Einfluss auf das System, man muss selbst die Umstellung auf diesen durchführen. Da dieser Schritt einige Zeit beanspruchen kann ist es empfehlenswert sich entsprechend Zeit zu nehmen und darauf vorzubereiten.
Es gibt zwei mögliche Wege: Ein schneller und ein etwas gründlicherer, der jedoch mehr Zeit in Anspruch nimmt. Der schnelle verwendet revdep-rebuild und es besteht die Möglichkeit, dass Pakete übersehen werden. In diesem Fall müssen sie manuell neu gebaut werden.

Alternative 1: Mit Hilfe von revdep-rebuild (schnell)
Falls nicht bereits vorhanden muss gentoolkit installiert werden. Danach wird die neue gcc-Version installiert und der neue Compiler ausgewählt.
Code:

# emerge -an gentoolkit
# emerge -uav gcc
# gcc-config i686-pc-linux-gnu-3.4.4
# source /etc/profile

Anmerkung: Dieses Beispiel geht von CHOST="i686-pc-linux-gnu" aus. Falls ein anderer gesetzt ist bitte entsprechend anpassen.

Warnung: Bitte jetzt noch keine neuen, nur von gcc 3.4 unterstützten CFLAGS wie -march=pentium-m setzen, falls nocheinmal gcc 3.3.6 übersetzt wird geht das nämlich daneben. 3.4.4 kennt "mcpu=" nicht mehr, stattdessen sollte -march oder -mtune verwendet werden.

Einige Pakete müssen neu uebersetzt werden. Mit Hilfe von revdep-rebuild lassen wir eine Liste dieser Pakete erstellen. Anschließend emergen wir sie neu, auch das erledigt revdep-rebuild für uns.
Code:
# revdep-rebuild --library libstdc++.so.5 -- -p -v
# revdep-rebuild --library libstdc++.so.5

Falls Probleme mit nicht existierenden Versionen (veraltet oder maskiert) auftreten kann auch -X verwendet werden. Damit werden Pakete nur aufgrund ihres Namens, nicht aber die exakt selben Versionen ausgewählt.
Code:
# revdep-rebuild -X --library libstdc++.so.5 -- -p -v
# revdep-rebuild -X --library libstdc++.so.5

Vor dem Entfernen von gcc 3.3.6 muss sys-libs/libstdc++-v3 installiert werden, ansonsten funktionieren manche Anwendungen nicht mehr.
Code:
# emerge --oneshot sys-libs/libstdc++-v3
# emerge -aC =sys-devel/gcc-3.3*


Alternative 2: Mit Hilfe von emerge -e (gründlichere Methode)
Diese Methode nimmt deutlich mehr Zeit in Anspruch. Dafür wird das ganze System mit dem neuen Compiler übersetzt. Zuerst wird gcc upgedated und der neue Compiler ausgewählt.
Code:
# emerge -uav gcc
# gcc-config i686-pc-linux-gnu-3.4.4
# source /etc/profile

Anmerkung: Dieses Beispiel geht von CHOST="i686-pc-linux-gnu" aus. Falls ein anderer gesetzt ist bitte entsprechend anpassen.

Warnung: Bitte jetzt noch keine neuen, nur von gcc 3.4 unterstützten CFLAGS wie -march=pentium-m setzen, da nocheinmal gcc 3.3.6 übersetzt wird und dies zu Fehlern führen würde. 3.4.4 kennt "mcpu=" nicht mehr, stattdessen sollte -march oder -mtune verwendet werden.

Die Bibliothem sys-libs/libstdc++-v3 muss installiert werden um die Kompatibilität mit Binärpaketen, die gegen gcc 3.3 installiert wurden zu sichern.
Code:
# emerge --oneshot sys-libs/libstdc++-v3


Jetzt werden zuerst alle in system, dann alle in world enthaltenen Pakete neu gebaut. Das kann je nach Anzahl der installierten Pakete relativ lange dauern. Dabei wird die Toolchain und alle zugehörigen Files neu gebaut, dann alle Pakete aus dem Systemprofil und schliesslich nocheinmal alle Pakete (inklusive der Toolchain). Damit wird sichergestellt, dass alle Pakete (inklusive der Toolchain) mit der neuen Toolchain gebaut wurden.
Code:
# emerge -e system
# emerge -e world

Nun kann gcc 3.3.6 entfernt werden
Code:
# emerge -aC =sys-devel/gcc-3.3*


Hinweise/Probleme:
  • Kernelmodule (z.B. app-emulation/qemu-softmmu), die mit dem neuen gcc 3.4.4 übersetzt wurden funktionieren nicht mit dem alten Kernel. Lösung: Auch diesen mit 3.4.4 neu übersetzen.
  • Revdep-rebuild will eventuell auch schon neu gebaute Pakete erneut übersetzen (ist mir z.B. mit audacity, wxGTK passiert). Ich habe einfach weitergemacht, Audacity funktioniert noch immer.
  • Bei Fehlern bei emerge -e system/world kann man mit emerge --resume dort weitermachen, wo abgebrochen wurde. Falls sich das eigentliche Problem nicht lösen lässt kann man dieses Paket mit emerge --resume --skipfirst überspringen. Man sollte in der Zwischenzeit kein anderes Emerge ausführen, da dann die Information zum Fortsetzen verloren geht.
  • Dieser Fehler
    libtool: link: `/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.6/libstdc++.la' is not a valid libtool archive
    kann mittels /sbin/fix_libtool_files.sh 3.3.6 beseitigt werden.
  • Falls /sbin/fix_libtool_files.sh beim Entfernen von gcc 3.3.6 verloren gegangen ist, sollte gcc (3.4.4) nocheinmal gemerged werden. Dies passiert möglicherweise nach emerge -e system falls gcc 3.3.6 nach 3.4.4 gebaut wird.
    Wer gcc nicht nocheinmal mergen will kann /lib/rcscripts/awk/fixlafiles.awk and /sbin/fix_libtool_files.sh aus /usr/portage/sys-devel/gcc/files(/awk) herüberkopieren. Das kann allerdings zur Folge haben, dass Portage diese Files nicht erkennt und sich beim nächsten gcc-Upgrade beschwert falls man collision-protect in den Features aktiviert hat.
  • Ich hatte vorher gcc 3.3.6, es traten aber Fehler über ein fehlendes /etc/env.d/gcc/i686-pc-linux-gnu-3.3.5 auf.

    Quote:
    # gcc-config -l
    /usr/bin/gcc-config: line 632: /etc/env.d/gcc/i686-pc-linux-gnu-3.3.5: No such
    file or directory
    * /usr/bin/gcc-config: Profile does not exist or invalid setting for
    /etc/env.d/gcc/i686-pc-linux-gnu-3.3.5
    [1] i686-pc-linux-gnu-3.3.6
    [2] i686-pc-linux-gnu-3.3.6-hardened
    [3] i686-pc-linux-gnu-3.3.6-hardenednopie
    [4] i686-pc-linux-gnu-3.3.6-hardenednopiessp
    [5] i686-pc-linux-gnu-3.3.6-hardenednossp
    [6] i686-pc-linux-gnu-3.4.4
    [7] i686-pc-linux-gnu-3.4.4-hardened
    [8] i686-pc-linux-gnu-3.4.4-hardenednopie
    [9] i686-pc-linux-gnu-3.4.4-hardenednopiessp
    [10] i686-pc-linux-gnu-3.4.4-hardenednossp

    Das Problem wird scheinbar durch ein vergessenes /etc/env.d/gcc/config-i686-pc-linux-gnu mit dem Inhalt "CURRENT=i686-pc-linux-gnu-3.3.5" ausgelöst.
    Wer ein solches /etc/env.d/gcc/config-i686-pc-linux-gnu hat (welches nur verwendet wird, falls ein Cross-compiler im Einsatz ist): Datei löschen, compiler neu mit gcc-config setzen und source /etc/profile ausführen.

_________________
Dinosaur week! (Ok, this thread is so last week)


Last edited by amne on Mon Dec 19, 2005 9:08 pm; edited 8 times in total
Back to top
View user's profile Send private message
Diskus
Tux's lil' helper
Tux's lil' helper


Joined: 20 Apr 2005
Posts: 131

PostPosted: Sat Dec 03, 2005 8:42 am    Post subject: Reply with quote

Hallo,

mache gerade die Umstellung habe aber eine Frage:

während "emerge -e system" wird der gcc-3.3.6 ja noch mal neu gemergt jetzt steht unter "emerge --info" wieder:

Portage 2.0.51.22-r3 (default-linux/x86/2005.1, gcc-3.3.6, glibc-2.3.5-r2, 2.6.13-gentoo-r3 i686)


usw.
ist das normal??

Diskus
Back to top
View user's profile Send private message
amne
Bodhisattva
Bodhisattva


Joined: 17 Nov 2002
Posts: 6377
Location: Graz / EU

PostPosted: Sat Dec 03, 2005 8:56 am    Post subject: Reply with quote

Hast du den richtigen Gcc als Default-compiler ausgwählt? Wenn ja hat 3.4.4 bei gcc-config -l ein Sternchen. Falls das der Fall ist kannst du vermutlich damit rechnen, dass bei dir das oben beschriebene Problem mit /sbin/fix_libtool_files.sh auftritt wenn du 3.3.6 entfernst. ;)
_________________
Dinosaur week! (Ok, this thread is so last week)
Back to top
View user's profile Send private message
Diskus
Tux's lil' helper
Tux's lil' helper


Joined: 20 Apr 2005
Posts: 131

PostPosted: Sat Dec 03, 2005 9:06 am    Post subject: Reply with quote

Hallo,

ein gcc-config -l bringt:

ocalhost lars # gcc-config -l
[1] i686-pc-linux-gnu-3.3.6 *
[2] i686-pc-linux-gnu-3.3.6-hardened
[3] i686-pc-linux-gnu-3.3.6-hardenednopie
[4] i686-pc-linux-gnu-3.3.6-hardenednopiessp
[5] i686-pc-linux-gnu-3.3.6-hardenednossp
[6] i686-pc-linux-gnu-3.4.4
[7] i686-pc-linux-gnu-3.4.4-hardened
[8] i686-pc-linux-gnu-3.4.4-hardenednopie
[9] i686-pc-linux-gnu-3.4.4-hardenednopiessp
[10] i686-pc-linux-gnu-3.4.4-hardenednossp
also ist bei dem emerge -e system der gcc wieder umgestellt worden!

während des neumergen des Systems ist zuerst gcc 3.4.4 und dannach gcc 3.3.6 gemergt worden -ist das nun gut oder schlecht???-ich bin noch bei emerge -e system soll ich abbrechen oder weitermachen lassen?

ich habe mal:emerge -pve sytem gemacht und den ausdruck bekommen:
localhost lars # emerge -pve system

These are the packages that I would merge, in order:

Calculating system dependencies ...done!
[ebuild N ] sys-devel/patch-2.5.9 -build -static 0 kB
[ebuild N ] sys-libs/gpm-1.20.1-r4 -emacs (-selinux) 0 kB
[ebuild N ] sys-libs/ncurses-5.4-r6 -bootstrap -build -debug -doc +gpm -minimal -nocxx -unicode 0 kB
[ebuild N ] sys-devel/binutils-config-1.8-r6 0 kB
[ebuild N ] sys-devel/gnuconfig-20050602 0 kB
[ebuild N ] sys-devel/binutils-2.16.1 -multislot -multitarget +nls -test 0 kB
[ebuild N ] sys-devel/m4-1.4.3 +nls 0 kB
[ebuild N ] sys-devel/bison-1.875d +nls -static 0 kB
[ebuild N ] sys-apps/sed-4.1.4 -bootstrap -build +nls -static 0 kB
[ebuild N ] sys-devel/gcc-config-1.3.12-r4 0 kB
[ebuild N ] sys-libs/zlib-1.2.3 -build 0 kB
[ebuild N ] sys-devel/gcc-3.4.4-r1 (-altivec) -bootstrap -boundschecking -build +fortran -gcj +gtk -hardened -ip28 -mudflap (-multilib) -multislot (-n32) (-n64) +nls -nocxx -nopie -nossp -objc -objc-gc -vanilla 0 kB
[ebuild N ] sys-devel/gcc-3.3.6 (-altivec) -bootstrap -boundschecking -build +fortran -gcj +gtk -hardened -ip28 -mudflap (-multilib) -multislot (-n32) (-n64) +nls -nocxx -nopie -nossp -objc -objc-gc -vanilla 0 kB
[ebuild N ] sys-kernel/linux-headers-2.6.11-r2 0 kB
[ebuild N ] sys-libs/glibc-2.3.5-r2 -build -erandom -glibc-compat20 -glibc-omitfp -hardened -linuxthreads-tls (-multilib) +nls -nptl -nptlonly -pic -profile (-selinux) +userlocales 0 kB


also zuerst wird der 3.4.4-r1 installiert und dannach der gcc 3.3.6-nach der Installation des gcc wir ja gleich automatisch (gcc-config i686-pc-linux-gnu-3.......)geswicht zu der jeweiligen Version.

Diskus
Back to top
View user's profile Send private message
SinoTech
Advocate
Advocate


Joined: 20 Mar 2004
Posts: 2579
Location: Neunkirchen / Saarland / Germany

PostPosted: Sat Dec 03, 2005 9:26 am    Post subject: Reply with quote

Diskus wrote:

[...]
also zuerst wird der 3.4.4-r1 installiert und dannach der gcc 3.3.6-nach der Installation des gcc wir ja gleich automatisch (gcc-config i686-pc-linux-gnu-3.......)geswicht zu der jeweiligen Version.

Diskus

Bin mir ziemlich sicher das NICHT automatisch geswitcht wird. Das musst du schon übernehmen.
Also, da du den neuen gcc ja anscheinend schon installiert hast, wechselt du jetzt zu ihm:
Code:

$ gcc-config i686-pc-linux-gnu-3.4.4

Mit Hilfe von "gcc-config -l" schaust du vorsichtshalber nach ob wirklich der neue Compiler ausgwählt wurde.
Dann machst du
Code:

$ source /etc/profile

Dann baust du dein System neu
Code:

$ emerge -e system

etc. etc. .. wie es eben oben in der Anleitung beschrieben steht.

Mfg

Sino


Last edited by SinoTech on Sat Dec 03, 2005 9:29 am; edited 1 time in total
Back to top
View user's profile Send private message
amne
Bodhisattva
Bodhisattva


Joined: 17 Nov 2002
Posts: 6377
Location: Graz / EU

PostPosted: Sat Dec 03, 2005 9:28 am    Post subject: Reply with quote

Ich fürchte da ist etwas beim Umschalten schiefgegangen und du hast alles nochmal mit dem alten Compiler gebaut.
Sprich: nocheinmal gcc-config i686-pc-linux-gnu-3.4.4 und source /etc/profile ausführen und neu emerge -e system/world ausführen. :(
Am Besten überprüfst du direkt davor nocheinmal ob gcc-config -l jetzt das * beim 3.4.4 hat.
_________________
Dinosaur week! (Ok, this thread is so last week)
Back to top
View user's profile Send private message
Diskus
Tux's lil' helper
Tux's lil' helper


Joined: 20 Apr 2005
Posts: 131

PostPosted: Sat Dec 03, 2005 9:56 am    Post subject: Reply with quote

Hallo,

ich habe jetzt noch mal!!!:

gcc-config i686-pc-linux-gnu-3.4.4 uns source /etc/profile/ gemacht und ein gcc-config -l bringt jetzt:

1] i686-pc-linux-gnu-3.3.6
[2] i686-pc-linux-gnu-3.3.6-hardened
[3] i686-pc-linux-gnu-3.3.6-hardenednopie
[4] i686-pc-linux-gnu-3.3.6-hardenednopiessp
[5] i686-pc-linux-gnu-3.3.6-hardenednossp
[6] i686-pc-linux-gnu-3.4.4 *
[7] i686-pc-linux-gnu-3.4.4-hardened
[8] i686-pc-linux-gnu-3.4.4-hardenednopie
[9] i686-pc-linux-gnu-3.4.4-hardenednopiessp
[10] i686-pc-linux-gnu-3.4.4-hardenednossp

also alles richtig aber mal sehen wenn er den gcc 3.3.6 neu gemerget hat!

Diskus


Last edited by Diskus on Sat Dec 03, 2005 11:11 am; edited 1 time in total
Back to top
View user's profile Send private message
Diskus
Tux's lil' helper
Tux's lil' helper


Joined: 20 Apr 2005
Posts: 131

PostPosted: Sat Dec 03, 2005 10:40 am    Post subject: Reply with quote

Hallo,

und er schwicht doch von allein!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


der Beweis:

-- !targe sym /usr/i686-pc-linux-gnu/gcc-bin/3.3.6/i686-pc-linux-gnu-gcc-3.3.6
--- !targe sym /usr/i686-pc-linux-gnu/gcc-bin/3.3.6/gcc
--- !targe sym /usr/i686-pc-linux-gnu/gcc-bin/3.3.6/g77
--- !targe sym /usr/i686-pc-linux-gnu/gcc-bin/3.3.6/g++
--- !targe sym /usr/i686-pc-linux-gnu/gcc-bin/3.3.6/c++
--- !targe sym /usr/bin/i686-pc-linux-gnu-gcc-3.3.6
--- !targe sym /usr/bin/i686-pc-linux-gnu-g77-3.3.6
--- !targe sym /usr/bin/i686-pc-linux-gnu-g++-3.3.6
--- !targe sym /usr/bin/i686-pc-linux-gnu-c++-3.3.6
--- !targe sym /usr/bin/gcc-3.3.6
--- !targe sym /usr/bin/g77-3.3.6
--- !targe sym /usr/bin/g++-3.3.6
--- !targe sym /usr/bin/c++-3.3.6
>>> original instance of package unmerged safely.
* Switching native-compiler to i686-pc-linux-gnu-3.3.6 ... [ ok ]

* If you intend to use the gcc from the new profile in an already
* running shell, please remember to do:

* # source /etc/profile


* If you have issues with packages unable to locate libstdc++.la,
* then try running 'fix_libtool_files.sh' on the old gcc versions.

>>> Regenerating /etc/ld.so.cache...
>>> sys-devel/gcc-3.3.6 merged.


und sofort kommt unter:
localhost lars # gcc-config -l
[1] i686-pc-linux-gnu-3.3.6 *
[2] i686-pc-linux-gnu-3.3.6-hardened
[3] i686-pc-linux-gnu-3.3.6-hardenednopie
[4] i686-pc-linux-gnu-3.3.6-hardenednopiessp
[5] i686-pc-linux-gnu-3.3.6-hardenednossp
[6] i686-pc-linux-gnu-3.4.4
[7] i686-pc-linux-gnu-3.4.4-hardened
[8] i686-pc-linux-gnu-3.4.4-hardenednopie
[9] i686-pc-linux-gnu-3.4.4-hardenednopiessp
[10] i686-pc-linux-gnu-3.4.4-hardenednossp


und nun???????

Diskus
Back to top
View user's profile Send private message
SinoTech
Advocate
Advocate


Joined: 20 Mar 2004
Posts: 2579
Location: Neunkirchen / Saarland / Germany

PostPosted: Sat Dec 03, 2005 12:03 pm    Post subject: Reply with quote

Also habe mal testweise wieder einen älteren gcc intstalliert, und bei mir switcht er nicht:
Code:

* The current gcc config appears valid, so it will not be
 * automatically switched for you. If you would like to
 * switch to the newly installed gcc version, do the
 * following:

 * gcc-config i686-pc-linux-gnu-3.4.4
 * source /etc/profile

 * Switching native-compiler to i686-pc-linux-gnu-4.0.2 ...

 * If you have issues with packages unable to locate libstdc++.la,
 * then try running 'fix_libtool_files.sh' on the old gcc versions.


 * You should make sure to rebuild all your C++ packages when
 * upgrading between different versions of gcc. For example,
 * when moving to gcc-3.4 from gcc-3.3, emerge gentoolkit and run:
 * # revdep-rebuild --library libstdc++.so.5

Ok, habe den 3.4.4 neu installiert und nicht den 3.3.6, aber sollte eigentlich keinen Unterschied machen. Also ich empfehle dir jetzt folgendes:

1. Emerge gcc-3.4.4
2. Switche zu ihm
Code:

$ gcc-config -l
$ gcc-config <number of your desired compiler>
$ source /etc/profile

3. Toolchain neu compilieren
Code:

$ emerge glibc binutils && emerge glibc binutils gcc

4. emerge "libstdc++-v3"
Code:

$ emerge libstdc++-v3

5. deinstalliere den alten gcc (Der wird jetzt nicht mehr gebraucht, da du die libstdc++-v3 hast)
Code:

$ emerge -C "=gcc-<old-version>

6. Baue dein System neu
Code:

$ emerge -e world

In diesem Fall wird der alte gcc nicht neu gebaut, und daher sollte es auch keine Probleme mehr diesbezüglich geben :)

Mfg

Sino

EDIT:
Natürlich muss nun noch der Kernel neu gebaut werden, da dieser nur kernelmodule lädt die mit dem gleichen gcc wie er erstellt wurden. Da wir ein "emerge -e world" gemacht haben, wurden natürlich auch solche Packete neu ge-merged die kernelmodule mit sich bringen (Bsp.: das nvidia-Modul).
Also -> Kernel neu bauen.
Danke an schmutzfinger der uns daran erinnert hat.


Last edited by SinoTech on Tue Dec 06, 2005 4:29 pm; edited 2 times in total
Back to top
View user's profile Send private message
Diskus
Tux's lil' helper
Tux's lil' helper


Joined: 20 Apr 2005
Posts: 131

PostPosted: Sat Dec 03, 2005 12:15 pm    Post subject: Reply with quote

Hallo,

danke ,das teste ich gleich mal

diskus
Back to top
View user's profile Send private message
amne
Bodhisattva
Bodhisattva


Joined: 17 Nov 2002
Posts: 6377
Location: Graz / EU

PostPosted: Sat Dec 03, 2005 12:34 pm    Post subject: Reply with quote

Seltsam. Du hast nicht zufällig ein File namens /etc/env.d/gcc/config-i686-pc-linux-gnu auf deinem System? Wenn ja, welchen Inhalt hat es? Keine Sorge wenn es nicht da ist, eigentlich sollte es nicht existieren.

edit: Bei manchen wird schon bei der Installation von 3.4.4 automatisch auf diesen umgeschalten, bei manchen einscheinend nicht. Bug 114341 geht dieser Sache gerade auf den Grund.
_________________
Dinosaur week! (Ok, this thread is so last week)
Back to top
View user's profile Send private message
amne
Bodhisattva
Bodhisattva


Joined: 17 Nov 2002
Posts: 6377
Location: Graz / EU

PostPosted: Sat Dec 03, 2005 1:49 pm    Post subject: Reply with quote

SinoTech wrote:

2. Switche zu ihm
3. Toolchain neu compilieren
4. emerge "libstdc++-v3"
5. deinstalliere den alten gcc (Der wird jetzt nicht mehr gebraucht, da du die libstdc++-v3 hast)
6. Baue dein System neu
Code:

$ emerge world

In diesem Fall wird der alte gcc nicht neu gebaut, und daher sollte es auch keine Probleme mehr diesbezüglich geben :)


Du meinst vermutlich emerge -e world, oder? Abgesehen davon ist diese Methode vermutlich sinnvoller, wir unterhalten uns gerade darüber die Anleitung in diese Richtung abzuändern.
_________________
Dinosaur week! (Ok, this thread is so last week)
Back to top
View user's profile Send private message
Diskus
Tux's lil' helper
Tux's lil' helper


Joined: 20 Apr 2005
Posts: 131

PostPosted: Sat Dec 03, 2005 2:14 pm    Post subject: Reply with quote

Hallo,

@amne

die gesuchte datei /etc/env.d/gcc/config-i686-pc-linux-gnu habe ich nicht auf meinen System-ich mache jetzt nach SinoTech ś Anleitung mal weiter

Diskus
Back to top
View user's profile Send private message
amne
Bodhisattva
Bodhisattva


Joined: 17 Nov 2002
Posts: 6377
Location: Graz / EU

PostPosted: Sat Dec 03, 2005 2:21 pm    Post subject: Reply with quote

Wie es aussieht wechselt der der Default-compiler auf manchen Systemen von selbst auf manchen nicht. Warum das so ist - keine Ahnung.
In Kürze wird die Methode ähnlich zu Sinos geändert werden, voraussichtlich wird libstdc++-v3 vorgezogen, dann emerge -e system/world (da libstdc++-v3 installiert ist wird 3.3.x niccht mehr gebaut).
_________________
Dinosaur week! (Ok, this thread is so last week)
Back to top
View user's profile Send private message
SinoTech
Advocate
Advocate


Joined: 20 Mar 2004
Posts: 2579
Location: Neunkirchen / Saarland / Germany

PostPosted: Sat Dec 03, 2005 2:29 pm    Post subject: Reply with quote

amne wrote:
[...]
Du meinst vermutlich emerge -e world, oder?
[...]

Jep, habs schon verbessert :).

amne wrote:
[...]
Abgesehen davon ist diese Methode vermutlich sinnvoller, wir unterhalten uns gerade darüber die Anleitung in diese Richtung abzuändern.

Damn, I am good! :D
Ach ja, dann empfehl ich aber aus 4. das hier zu machen:
Code:

4a. emerge "libstdc++-v3"
4b. env-update

Da die "libstdc++.so.5" nun nicht mehr in diesem verzeichniss liegt:
Code:

/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5/

sondern in diesem
Code:

/usr/lib/libstdc++-v3/


Mfg

Sino
Back to top
View user's profile Send private message
amne
Bodhisattva
Bodhisattva


Joined: 17 Nov 2002
Posts: 6377
Location: Graz / EU

PostPosted: Sat Dec 03, 2005 2:44 pm    Post subject: Reply with quote

SinoTech wrote:
Ach ja, dann empfehl ich aber aus 4. das hier zu machen:
Code:

4a. emerge "libstdc++-v3"
4b. env-update



Ich bin mir zwar auch nicht sicher, aber solange man gcc 3.3.x noch nicht entfernt hat (was in der gerade geänderten Version, siehe oben erst nach emerge -e passiert) sollte das egal sein, oder?
_________________
Dinosaur week! (Ok, this thread is so last week)
Back to top
View user's profile Send private message
Diskus
Tux's lil' helper
Tux's lil' helper


Joined: 20 Apr 2005
Posts: 131

PostPosted: Sat Dec 03, 2005 2:52 pm    Post subject: Reply with quote

Hallo ihr Zwei,

also bei mir kompiliert er jetzt fröhlich (329) world-Pakete neu und das ohne 4a und 4b. ,also ohne env-update.

habe auch nach der deinstallation vom 3.3.6 meine CFLAGS auf march=pentium-m gleich gewechselt und bis jetzt läuft es prima und auch schneller (bilde ich mir ein).

Ich hoffe das hält an und er zieht problemlos durch bis zum Schluß.

Diskus
Back to top
View user's profile Send private message
SinoTech
Advocate
Advocate


Joined: 20 Mar 2004
Posts: 2579
Location: Neunkirchen / Saarland / Germany

PostPosted: Sat Dec 03, 2005 2:59 pm    Post subject: Reply with quote

amne wrote:
SinoTech wrote:
Ach ja, dann empfehl ich aber aus 4. das hier zu machen:
Code:

4a. emerge "libstdc++-v3"
4b. env-update



Ich bin mir zwar auch nicht sicher, aber solange man gcc 3.3.x noch nicht entfernt hat (was in der gerade geänderten Version, siehe oben erst nach emerge -e passiert) sollte das egal sein, oder?

Jo, hatte bei mir, als ich mein update machte, auch kein "env-update" gemacht. Nur hab ich schon ein paar mal im Forum Fehlermeldungen bzgl. "libstdc++.*" gelesen, und dachte mir das ein "env-update" evtl. nicht verkehrt wäre. Solange der alte gcc noch installiert ist sollte es aber so oder so keine Probleme geben, nur ich würde den alten gcc vor dem "emerge -e" entfernen, schon alleine deswegen weil man so auch gleich neue CFLAGS setzen kann die nur vom neuen gcc unterstützt werden.

Mfg

Sino
Back to top
View user's profile Send private message
amne
Bodhisattva
Bodhisattva


Joined: 17 Nov 2002
Posts: 6377
Location: Graz / EU

PostPosted: Sat Dec 03, 2005 3:18 pm    Post subject: Reply with quote

SinoTech wrote:
Solange der alte gcc noch installiert ist sollte es aber so oder so keine Probleme geben, nur ich würde den alten gcc vor dem "emerge -e" entfernen, schon alleine deswegen weil man so auch gleich neue CFLAGS setzen kann die nur vom neuen gcc unterstützt werden.

Dann macht es vermutlich durchaus Sinn, die Anleitung ist was solche Sachen wie CFLAGS ändern angeht eher zurückhaltend gehalten, da eh schon so genug schief gehen kann und das Upgrade alle x86 User betrifft.
Wenn man weiss was man tut kann man durchaus ein wenig abweichen. Ich habe beim Testen z.b. nur emerge -e system gemacht und dann revdep-rebuild. ;)
_________________
Dinosaur week! (Ok, this thread is so last week)
Back to top
View user's profile Send private message
SinoTech
Advocate
Advocate


Joined: 20 Mar 2004
Posts: 2579
Location: Neunkirchen / Saarland / Germany

PostPosted: Sat Dec 03, 2005 3:40 pm    Post subject: Reply with quote

amne wrote:

[...]
Dann macht es vermutlich durchaus Sinn, die Anleitung ist was solche Sachen wie CFLAGS ändern angeht eher zurückhaltend gehalten, da eh schon so genug schief gehen kann und das Upgrade alle x86 User betrifft.
[...]

Stimmt, wird mit Sicherheit auch noch der eine oder andere kommen der damit Probleme hat.

amne wrote:

[...]
Wenn man weiss was man tut kann man durchaus ein wenig abweichen. Ich habe beim Testen z.b. nur emerge -e system gemacht und dann revdep-rebuild. ;)

;) Also kurz und schmerzlos ;)

Mfg

Sino
Back to top
View user's profile Send private message
STiGMaTa_ch
Veteran
Veteran


Joined: 28 Dec 2004
Posts: 1686
Location: Rüti ZH / Schweiz

PostPosted: Sat Dec 03, 2005 4:08 pm    Post subject: Reply with quote

Ich habe hier auch ein kleines Problem beim kompilieren von metalog.

Habe mir dieses Weekend die Zeit genommen, auf einem meiner Server ein SELinux (Hardened Gentoo) from Scratch zu installieren. Da ich mit einem Stage 1 angefangen habe, ist dort also das aktuellste gcc 3.4.4 drauf und alle Pakete wurden auch damit kompiliert.

Nun wollte ich wie in der Anleitung beschrieben metalog emergen und erhalte folgende Fehlermeldung:
Code:
i686-pc-linux-gnu-gcc -c -march=pentium4 -O2 -pipe -fomit-frame-pointer -fPIC -I. -I. -DSUPPORT_UTF8  -DIS_UNIX ./pcregrep.c
 i686-pc-linux-gnu-g++ -c -march=pentium4 -O2 -pipe -fomit-frame-pointer -fPIC -I. -I. -DSUPPORT_UTF8 -DPOSIX_MALLOC_THRESHOLD=10 ./pcrecpp.cc  -fPIC -DPIC -o .libs/pcrecpp.o
 i686-pc-linux-gnu-g++ -c -march=pentium4 -O2 -pipe -fomit-frame-pointer -fPIC -I. -I. -DSUPPORT_UTF8 -DPOSIX_MALLOC_THRESHOLD=10 ./pcre_scanner.cc  -fPIC -DPIC -o .libs/pcre_scanner.o
 i686-pc-linux-gnu-g++ -c -march=pentium4 -O2 -pipe -fomit-frame-pointer -fPIC -I. -I. -DSUPPORT_UTF8 -DPOSIX_MALLOC_THRESHOLD=10 ./pcre_scanner.cc -o pcre_scanner.o >/dev/null 2>&1
 i686-pc-linux-gnu-g++ -c -march=pentium4 -O2 -pipe -fomit-frame-pointer -fPIC -I. -I. -DSUPPORT_UTF8 -DPOSIX_MALLOC_THRESHOLD=10 ./pcrecpp.cc -o pcrecpp.o >/dev/null 2>&1
i686-pc-linux-gnu-g++ -c -march=pentium4 -O2 -pipe -fomit-frame-pointer -fPIC -I. -I. -DSUPPORT_UTF8   ./pcrecpp_unittest.cc
 i686-pc-linux-gnu-g++ -c -march=pentium4 -O2 -pipe -fomit-frame-pointer -fPIC -I. -I. -DSUPPORT_UTF8 -DPOSIX_MALLOC_THRESHOLD=10 ./pcre_stringpiece.cc  -fPIC -DPIC -o .libs/pcre_stringpiece.o
In file included from /usr/lib/gcc/i686-pc-linux-gnu/3.4.4/include/g++-v3/bits/locale_facets.h:1533,
                 from /usr/lib/gcc/i686-pc-linux-gnu/3.4.4/include/g++-v3/bits/basic_ios.h:44,
                 from /usr/lib/gcc/i686-pc-linux-gnu/3.4.4/include/g++-v3/ios:51,
                 from /usr/lib/gcc/i686-pc-linux-gnu/3.4.4/include/g++-v3/ostream:45,
                 from /usr/lib/gcc/i686-pc-linux-gnu/3.4.4/include/g++-v3/iostream:45,
                 from ./pcre_stringpiece.cc:33:
/usr/lib/gcc/i686-pc-linux-gnu/3.4.4/include/g++-v3/bits/codecvt.h:475:44: bits/codecvt_specializations.h: No such file or directory
make: *** [pcre_stringpiece.o] Error 1
make: *** Waiting for unfinished jobs....

!!! ERROR: dev-libs/libpcre-6.3 failed.
!!! Function src_compile, Line 38, Exitcode 2
!!! (no error message)
!!! If you need support, post the topmost build error, NOT this status message.


Und noch emerge --info, falls die Info was hilft.
Code:
Portage 2.0.51.22-r3 (hardened/x86/2.6, gcc-3.4.4, glibc-2.3.5-r2, 2.6.14 i686)
=================================================================
System uname: 2.6.14 i686 Intel(R) Celeron(R) CPU 2.40GHz
Gentoo Base System version 1.6.13
dev-lang/python:     2.3.5, 2.4.2
sys-apps/sandbox:    1.2.12
sys-devel/autoconf:  2.13, 2.59-r6
sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r1
sys-devel/binutils:  2.16.1
sys-devel/libtool:   1.5.20
virtual/os-headers:  2.6.11-r2
ACCEPT_KEYWORDS="x86"
AUTOCLEAN="yes"
CBUILD="i686-pc-linux-gnu"
CFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer"
CHOST="i686-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/kde/2/share/config /usr/kde/3/share/config /usr/share/config /var/qmail/control"
CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/env.d"
CXXFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer"
DISTDIR="/usr/portage/distfiles"
FEATURES="autoconfig distlocks sandbox sfperms strict"
GENTOO_MIRRORS="http://mirror.switch.ch/ftp/mirror/gentoo http://gentoo.mirror.solnet.ch"
MAKEOPTS="-j2"
PKGDIR="/usr/portage//packages/x86/"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage/"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="berkdb bzip2 crypt dlloader expat hardened ncurses nls pam perl pic python readline ssl tcpd userlocales x86 zlib userland_GNU kernel_linux elibc_glibc"
Unset:  ASFLAGS, CTARGET, LANG, LC_ALL, LDFLAGS, LINGUAS, PORTDIR_OVERLAY


Da dies mein erster Versuch ist, ein Hardened Gentoo zu installiern und dummerweise diese Umstellung grad reingeplatzt ist, bin ich nun etwas ratlos ob das Problem mit der gcc in Verbindung zu bringen ist, mit hardened gentoo im allgemeinen oder mit was völlig anderem.

Falls mir jemand nen Tipp hätte, wäre ich dankbar...

Lieber Gruss
STiMGaTa
Back to top
View user's profile Send private message
SinoTech
Advocate
Advocate


Joined: 20 Mar 2004
Posts: 2579
Location: Neunkirchen / Saarland / Germany

PostPosted: Sat Dec 03, 2005 4:22 pm    Post subject: Reply with quote

STiGMaTa_ch wrote:

[...]
/usr/lib/gcc/i686-pc-linux-gnu/3.4.4/include/g++-v3/bits/codecvt.h:475:44: bits/codecvt_specializations.h: No such file or directory
[...]

Also laut Portage file list liegt die gesucht Datei unter
Code:

/usr/lib/gcc/i686-pc-linux-gnu/3.4.4/include/g++-v3/i686-pc-linux-gnu/bits/codecvt_specializations.h

Da dies aber auch schon bei früheren gcc Versionen so war (siehe Link) sollte das kein Problem des neuen gcc sein.

Mfg

Sino

EDIT:
Bei mir hat es funktioniert ... evtl. solltest du dafür einen neuen Thread starten.
Back to top
View user's profile Send private message
SinoTech
Advocate
Advocate


Joined: 20 Mar 2004
Posts: 2579
Location: Neunkirchen / Saarland / Germany

PostPosted: Sat Dec 03, 2005 4:47 pm    Post subject: Reply with quote

@ STiGMaTa_ch
Ist es möglich das du auf deinem erwähnten Server UTF8 (unicode) benutzt?

Mfg

Sino
Back to top
View user's profile Send private message
STiGMaTa_ch
Veteran
Veteran


Joined: 28 Dec 2004
Posts: 1686
Location: Rüti ZH / Schweiz

PostPosted: Sat Dec 03, 2005 5:03 pm    Post subject: Reply with quote

SinoTech wrote:
@ STiGMaTa_ch
Ist es möglich das du auf deinem erwähnten Server UTF8 (unicode) benutzt?

Nicht bewusst:

/etc/rc.conf
Code:
UNICODE="no"


/etc/conf.d/consolefont
Code:
CONSOLEFONT="default8x16"


/etc/conf.d/keymaps
Code:
KEYMAP="us"
SET_WINDOWKEYS="no"
EXTENDED_KEYMAPS=""
DUMPKEYS_CHARSET=""


SinoTech wrote:
Bei mir hat es funktioniert ...

Hast du denn versucht metalog zu emergen oder dieses libpcre? Den ich habe grade gemerkt, dass nicht metalog das Problem ist sondern seine Abhängigkeit libpcre.

Danke für die Unterstützung SinoTech.

Lieber Gruss
STiGMaTa
Back to top
View user's profile Send private message
SinoTech
Advocate
Advocate


Joined: 20 Mar 2004
Posts: 2579
Location: Neunkirchen / Saarland / Germany

PostPosted: Sat Dec 03, 2005 5:21 pm    Post subject: Reply with quote

1. Habe die Abhängigkeit versucht zu emergen (Also das Paket das bei dir fehl schlug).
2. Habe glaub Problem gefunden. Problem liegt in einem der Header files des gcc und zwar in
Code:

/usr/lib/gcc/i686-pc-linux-gnu/3.4.4/include/g++-v3/bits/codecvt.h

Da stehen ganz unten folgende Zeilen:
Code:

#ifdef _GLIBCXX_USE_WCHAR_T
  #include <bits/codecvt_specializations.h>
#endif

Heißt falls unicode benutzt wird (also wenn die glibc mit unicode kompiliert wurde), dann noch "bits/codecvt_specializations.h" includieren.
Das include Verzeichniss des gcc (Also das Verzeichniss in dem der gcc nach den header files sucht) ist auf folgendes Verzeichniss eingestellt:
Code:

/usr/lib/gcc/i686-pc-linux-gnu/3.4.4/include/g++-v3

(Siehst in der Ausgabe von "gcc -v")

Als Resultat probiert der gcc also diese Datei zu includieren:
Quote:

/usr/lib/gcc/i686-pc-linux-gnu/3.4.4/include/g++-v3/bits/codecvt_specializations.h

Aber die Datei liegt hier:
Quote:

/usr/lib/gcc/i686-pc-linux-gnu/3.4.4/include/g++-v3/i686-pc-linux-gnu/bits/codecvt_specializations.h

Und somit kann sie nicht gefunden werden. Ist aber auch beim alten "gcc-3.3.X" so ... keine Ahnung wieso. Also änder mal in dieser Datei:
Code:

/usr/lib/gcc/i686-pc-linux-gnu/3.4.4/include/g++-v3/bits/codecvt.h

Die Zeilen (ganz unten) von
Quote:

#ifdef _GLIBCXX_USE_WCHAR_T
#include <bits/codecvt_specializations.h>
#endif

zu
Quote:

#ifdef _GLIBCXX_USE_WCHAR_T
#include <i686-pc-linux-gnu/bits/codecvt_specializations.h>
#endif

Danach sollte es funktionieren. Falls ich mich irre, kannst du die Änderung ja wieder rückgängig machen (Ist ja nur eine Zeile).

Mfg

Sino
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) All times are GMT
Goto page 1, 2, 3, 4, 5, 6  Next
Page 1 of 6

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum