View previous topic :: View next topic |
Author |
Message |
Erdie Advocate
Joined: 20 May 2004 Posts: 2576 Location: Heidelberg - Germany
|
Posted: Sun Sep 29, 2013 6:27 am Post subject: GCC 4.7 System neu bauen ja oder nein? |
|
|
Gerade kommt der gcc 4.7 reingeflattert auf amd64 stable. Die einen sagen, man müsse sein System komplett neu bauen. Die anderen sagen, das ist nicht notwendig, nur bei Major Versionnummern.
Das ist doch mal ein Grund zu diskutieren, oder nicht? Was meint ihr?
-Erdie _________________ Desktop AMD Ryzen 9 5900X 32GB RAM, Asus GF GTX 1060.
Notebook Tuxedo Pulse 15 Gen1 AMD Ryzen 7 4800H mit Radeon Vega 7
Raspberry Pi 1 + 2 + 3B+ + Zero W |
|
Back to top |
|
|
firefly Watchman
Joined: 31 Oct 2002 Posts: 5174
|
Posted: Sun Sep 29, 2013 10:19 am Post subject: |
|
|
laut dem post message von gcc ebuild ist für gentoo ein 4.x+1 eine major version:
Quote: | If you have issues with packages unable to locate libstdc++.la,
then try running 'fix_libtool_files.sh' on the old gcc versions.
You might want to review the GCC upgrade guide when moving between
major versions (like 4.2 to 4.3):
http://www.gentoo.org/doc/en/gcc-upgrading.xml |
Das ganze betrifft/betraf hauptsächlich C++ Programme, da sich die ABI der C++ runtime (libstdc++.so) in früheren Versionen des gcc geändert hat.
Aber laut dem verlinkten guide ist ein komplettes neu bauen nicht mehr notwendig (war beim Wechsel von gcc 3.x auf 4.x notwendig). Da mit gcc 4.1+ die ABI "forward compatible" ist.
Sprich ein C++ programm, welches z.b. gcc 4.4.y übersetzt wurde, sollte auch ohne probleme mit der c++ runtime von gcc 4.5, 4.6, usw. laufen.
http://www.gentoo.org/doc/en/gcc-upgrading.xml wrote: | ABI Changes
An ABI, or Application Binary Interface, is a set of conventions used by all tools that deal with binary representation of programs, including compilers, assemblers, linkers and language runtime support (source: GCC Binary Compatibility). When the ABI used for binary applications and libraries is changed, you will risk getting linker errors or malfunctioning programs unless you rebuild all libraries that use C++ code. Yes, C++, since most incompatibilities occur within the C++ ABI. This is also why we use the revdep-rebuild command against the libstdc++.so.5 library.
Code Listing 2.1: Rebuilding applications linked against libstdc++.so.5
# revdep-rebuild --library libstdc++.so.5
So why is this only needed up to GCC 3.4.0/4.1 ? That's because from that version onwards, GCC uses a forward compatible ABI, which removes the need for rebuilding applications and libraries. Of course, guarantees can never be given indefinitely, but when an incompatibility occurs again, we'll definitely document it here In that case, the version of the libstdc++.so library will probably be increased.
Rebuilding Everything
Some people swear that they need to rebuild every single package on their system when a new GCC version is made available. Of course, that doesn't make sense, since there are many applications that are not using GCC for their build and install process anyhow, so they would never be affected by such changes.
That however doesn't mean they are completely incorrect: newer GCC versions often include better support for the processors' instruction set, which might influence the performance of some applications in a positive way. Although it is expected that this improvement is generally only marginally, in some cases (especially CPU intensive applications) this might yield notable improvements.
There are also known cases where packages need to be built with the same compiler. Although these packages are usually bumped by Gentoo simultaneously (so that they are always built with the same GCC version) cherry-picking reinstalls on these packages might prove to be troublesome. The various qt-* packages are a nice example on this matter. |
_________________ Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn. |
|
Back to top |
|
|
Erdie Advocate
Joined: 20 May 2004 Posts: 2576 Location: Heidelberg - Germany
|
Posted: Sun Sep 29, 2013 10:49 am Post subject: |
|
|
Ich habe gestern abend nach dem world upgrade ein Quote: | emerge -ae --keep-going @world | gestartet. Kostet ja nix ausser etwas Strom. Damit sollte eigentlich alles erledigt sein. Ein paar Pakete noch, dann ist er fertig. _________________ Desktop AMD Ryzen 9 5900X 32GB RAM, Asus GF GTX 1060.
Notebook Tuxedo Pulse 15 Gen1 AMD Ryzen 7 4800H mit Radeon Vega 7
Raspberry Pi 1 + 2 + 3B+ + Zero W |
|
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
|
|