View previous topic :: View next topic |
Author |
Message |
amne Bodhisattva
Joined: 17 Nov 2002 Posts: 6378 Location: Graz / EU
|
Posted: Thu Dec 01, 2005 6:16 pm Post subject: Systemumstellung auf gcc 3.4(.4) |
|
|
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 |
|
|
Diskus Tux's lil' helper
Joined: 20 Apr 2005 Posts: 131
|
Posted: Sat Dec 03, 2005 8:42 am Post subject: |
|
|
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 |
|
|
amne Bodhisattva
Joined: 17 Nov 2002 Posts: 6378 Location: Graz / EU
|
Posted: Sat Dec 03, 2005 8:56 am Post subject: |
|
|
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 |
|
|
Diskus Tux's lil' helper
Joined: 20 Apr 2005 Posts: 131
|
Posted: Sat Dec 03, 2005 9:06 am Post subject: |
|
|
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 |
|
|
SinoTech Advocate
Joined: 20 Mar 2004 Posts: 2579 Location: Neunkirchen / Saarland / Germany
|
Posted: Sat Dec 03, 2005 9:26 am Post subject: |
|
|
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
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 |
|
|
amne Bodhisattva
Joined: 17 Nov 2002 Posts: 6378 Location: Graz / EU
|
Posted: Sat Dec 03, 2005 9:28 am Post subject: |
|
|
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 |
|
|
Diskus Tux's lil' helper
Joined: 20 Apr 2005 Posts: 131
|
Posted: Sat Dec 03, 2005 9:56 am Post subject: |
|
|
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 |
|
|
Diskus Tux's lil' helper
Joined: 20 Apr 2005 Posts: 131
|
Posted: Sat Dec 03, 2005 10:40 am Post subject: |
|
|
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 |
|
|
SinoTech Advocate
Joined: 20 Mar 2004 Posts: 2579 Location: Neunkirchen / Saarland / Germany
|
Posted: Sat Dec 03, 2005 12:03 pm Post subject: |
|
|
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
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 |
|
|
Diskus Tux's lil' helper
Joined: 20 Apr 2005 Posts: 131
|
Posted: Sat Dec 03, 2005 12:15 pm Post subject: |
|
|
Hallo,
danke ,das teste ich gleich mal
diskus |
|
Back to top |
|
|
amne Bodhisattva
Joined: 17 Nov 2002 Posts: 6378 Location: Graz / EU
|
Posted: Sat Dec 03, 2005 12:34 pm Post subject: |
|
|
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 |
|
|
amne Bodhisattva
Joined: 17 Nov 2002 Posts: 6378 Location: Graz / EU
|
Posted: Sat Dec 03, 2005 1:49 pm Post subject: |
|
|
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
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 |
|
|
Diskus Tux's lil' helper
Joined: 20 Apr 2005 Posts: 131
|
Posted: Sat Dec 03, 2005 2:14 pm Post subject: |
|
|
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 |
|
|
amne Bodhisattva
Joined: 17 Nov 2002 Posts: 6378 Location: Graz / EU
|
Posted: Sat Dec 03, 2005 2:21 pm Post subject: |
|
|
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 |
|
|
SinoTech Advocate
Joined: 20 Mar 2004 Posts: 2579 Location: Neunkirchen / Saarland / Germany
|
Posted: Sat Dec 03, 2005 2:29 pm Post subject: |
|
|
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!
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 |
|
|
amne Bodhisattva
Joined: 17 Nov 2002 Posts: 6378 Location: Graz / EU
|
Posted: Sat Dec 03, 2005 2:44 pm Post subject: |
|
|
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 |
|
|
Diskus Tux's lil' helper
Joined: 20 Apr 2005 Posts: 131
|
Posted: Sat Dec 03, 2005 2:52 pm Post subject: |
|
|
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 |
|
|
SinoTech Advocate
Joined: 20 Mar 2004 Posts: 2579 Location: Neunkirchen / Saarland / Germany
|
Posted: Sat Dec 03, 2005 2:59 pm Post subject: |
|
|
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 |
|
|
amne Bodhisattva
Joined: 17 Nov 2002 Posts: 6378 Location: Graz / EU
|
Posted: Sat Dec 03, 2005 3:18 pm Post subject: |
|
|
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 |
|
|
SinoTech Advocate
Joined: 20 Mar 2004 Posts: 2579 Location: Neunkirchen / Saarland / Germany
|
Posted: Sat Dec 03, 2005 3:40 pm Post subject: |
|
|
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 |
|
|
STiGMaTa_ch Veteran
Joined: 28 Dec 2004 Posts: 1686 Location: Rüti ZH / Schweiz
|
Posted: Sat Dec 03, 2005 4:08 pm Post subject: |
|
|
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 |
|
|
SinoTech Advocate
Joined: 20 Mar 2004 Posts: 2579 Location: Neunkirchen / Saarland / Germany
|
Posted: Sat Dec 03, 2005 4:22 pm Post subject: |
|
|
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 |
|
|
SinoTech Advocate
Joined: 20 Mar 2004 Posts: 2579 Location: Neunkirchen / Saarland / Germany
|
Posted: Sat Dec 03, 2005 4:47 pm Post subject: |
|
|
@ STiGMaTa_ch
Ist es möglich das du auf deinem erwähnten Server UTF8 (unicode) benutzt?
Mfg
Sino |
|
Back to top |
|
|
STiGMaTa_ch Veteran
Joined: 28 Dec 2004 Posts: 1686 Location: Rüti ZH / Schweiz
|
Posted: Sat Dec 03, 2005 5:03 pm Post subject: |
|
|
SinoTech wrote: | @ STiGMaTa_ch
Ist es möglich das du auf deinem erwähnten Server UTF8 (unicode) benutzt? |
Nicht bewusst:
/etc/rc.conf
/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 |
|
|
SinoTech Advocate
Joined: 20 Mar 2004 Posts: 2579 Location: Neunkirchen / Saarland / Germany
|
Posted: Sat Dec 03, 2005 5:21 pm Post subject: |
|
|
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 |
|
|
|
|
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
|
|