Hi
I was wondering, not just in os dev, but in all development, there seems to be 3 versions of GCC that are mainly used 3.3.x, 3.4.x and 4.0.x.
I was wondering, what are the advantages and disadvantages of these different versions as with most other compilers I've seen, most people try to plump for the latest one.
Of course, I realise there are still people using 2.95.x (which I have on my Amiga).
GCC version
Re:GCC version
3.3 is well-tested and default on most installations, so you just use it. 3.4 is relatively well-tested and not too new, so it compiles all older code well while being newer. 4.x is new and complains about some things I consider normal, plus it's less tested. Of course, it's the newest so people are going to want it.srg wrote: I was wondering, not just in os dev, but in all development, there seems to be 3 versions of GCC that are mainly used 3.3.x, 3.4.x and 4.0.x.
I was wondering, what are the advantages and disadvantages of these different versions as with most other compilers I've seen, most people try to plump for the latest one.
Re:GCC version
Especially the Fortran lot I expect LOLCandy wrote:Of course, it's the newest so people are going to want it.
Re:GCC version
3.3.6 has been the last release of its branch, development is closed.
3.4.5 is open for regression and documentation fixes only, and is scheduled for the closing release in Feb. 2006. Highlights from the list of changes:
3.4.5 is open for regression and documentation fixes only, and is scheduled for the closing release in Feb. 2006. Highlights from the list of changes:
- requires GNU make and a C90 compiler to be build;
- <varargs.h> has finally been tossed out;
- ABI changes for several architectures (not x86);
- new compilation scheme may break code relying on undefined stuff (compilation order, asm referencing statics that are not listed as arguments);
- [tt]profiledbootstrap[/tt] making for a faster compiler;
- C++ hand-written recursive-descent parser instead of the YACC derivate (many bugfixes).
- incompatible with GDB 6.0; use GDB 6.1;
- [tt]-fwritable-strings[/tt] no longer accepted;
- optimization improved;
- unoptimized C++ compilation receives massive speedup (~25%);
- experimental support for C++ TR1.
- still better optimization;
- recursive-descent parser replaces old Bison-based C/Objective-C parser;
- support for x86-64 "medium model" (data segments >4GB) if using binutils > 2.16.91 (which is funny, as the latest binutils release at ftp.gnu.org is 2.16.1... either they screwed up their versioning scheme or GCC 4.1 is relying on unreleased binutils...).
Every good solution is obvious once you've found it.