diff options
Diffstat (limited to 'debian/README.Debian')
-rw-r--r-- | debian/README.Debian | 185 |
1 files changed, 185 insertions, 0 deletions
diff --git a/debian/README.Debian b/debian/README.Debian new file mode 100644 index 0000000..457c92e --- /dev/null +++ b/debian/README.Debian @@ -0,0 +1,185 @@ + The Debian GNU Compiler Collection Setup + ======================================== + +Abstract +-------- + +Debian uses a default version of GCC for most packages; however, some +packages require another version. So, Debian allows several versions +of GCC to coexist on the same system, and selects the default version +by means of the gcc-defaults package, which creates symbolic links as +appropriate. + +FIXME: Needs update for stretch + +Versions of GCC present in Debian Stretch +----------------------------------------- + +- GCC 5 is the default compiler for all frontends on all architectures + except for Ada. + +- GCC 4.9 is the default compiler for Ada. + +- GCC 4.8 was removed for the release of Stretch. + +- GCC 4.7 was removed for the release of Jessie. + +- GCC 3.3 is not provided anymore; it is used to build libstdc++5 on + the amd64 and i386 architectures. It is expected that libstdc++5 is + not available anymore for the release following Lenny. + +- GCC 2.95 and GCC 2.7.2.3 were removed for the release of Lenny. + +How are the default compilers selected? +--------------------------------------- + +Starting in Debian 3.0, there is now a gcc-defaults package set. This +creates the actual packages for gcc, gnat, g++, gobjc, chill, gcj, gij, +gdc and gpc. These packages will depend on the corresponding default +compiler for that architecture. For Debian 5.0 for example, "gcc" +depends on "gcc-5", which means that the "gcc-5" package will +install a binary called "gcc-5", which is symlinked to in the "gcc" +package as "gcc". + +This may seem confusing, but what it allows you do to is install more +than one version of the GCC compiler collection at the same time, +making sure you are always using the one preferred for that +architecture. To use the other compiler, simply set CC=gcc-5, or +similar. + +The default compiler versions for Debian GNU/Linux on amd64 are +(minor version numbers omitted): + + cpp : cpp-6 + gcc : gcc-6 + g++ : g++-6 + gfortran : gfortran-6 + gcj : gcj-6 + gij : gij-6 + gccgo : gccgo-6 + gobjc : gobjc-6 + gobjc++ : gobjc++-6 + gdc : gdc-6 + +Most of the documentation for GCC including the manual pages is +licensed under the GFDL and therefore not included in the main section. + +Thanks to gcc-defaults, each architecture can choose its own preferred +compiler for each language, and that preference can change without +requiring a complete rebuild of both compiler packages for all +architectures. + +Practical implications +---------------------- + +The most important practical implications are in the merging/linking +of object files built with different compilers; If you use the 4.9 +C compiler, you should use the gcc-4.9 compiler driver for all your +work. When configuring sources, use + + CC=gcc-4.9 ./configure <configure options> # bash + setenv CC gcc-4.9; ./configure <options> # csh + +When calling make, use make CC=gcc-4.9. + +libstdc++ ABI +------------- + +Starting with Debian 8.0 (stretch), gcc-5 and newer compiler versions +now provides a stable libcxx11 ABI, and stable support for C++11 (GCC +version before 5 called this supported experimental). This required +some changes in the libstdc++ ABI, and now libstdc++6 provides a dual +ABI, the classic libcxx98 ABI, and the new libcxx11. Many C++ using +packages were rebuilt; it is likely that third party applications will +need rebuilds too. See https://wiki.debian.org/GCC5. + +C Application Binary Interface +------------------------------ + +Starting with Debian 4.0 (lenny), gcc-4.1 and newer compilers do +support the long double datatype with 128bit on the alpha, powerpc, +s390 and sparc architectures. Libraries and applications using this +datatype have to be rebuilt using the compiler versions in Lenny +unless these depend on libc6/libc6.1 and libstdc++6, which still have +compatibility with a 64bit long double datatype. + +gcc/g++/... are not handled using alternatives +---------------------------------------------- + +The symlinks in /usr/bin (gcc, g++, ...) are not handled using the Debian +alternative mechanism. There are differences in the architecture specific +ABI on some architectures and the C++ ABI differs as well. Having the +symlinks managed by alternatives doesn't allow reliable builds with the +same major/minor version of the compiler. To use another compiler version, +set the appropriate environment variables as described above in the section +"Practical implications". + +C++ libraries +------------- + +To use the libstdc++ library for debugging (found in the +libstd++6-<GCC version>-dbg package), add /usr/lib/debug to your +LD_LIBRARY_PATH. For gdb to display the source you need to get the +correspondig gcc-X.Y source package, unpack the source and point gdb +to the location of the source (dir directive). + +C++ Application Binary Interface +-------------------------------- + +Sometimes, the C++ ABI of GCC changes. It is impossible to link +object files that obey different ABIs into an executable. When the +ABI changes, Debian provides a new version of libstdc++ with a new +soname. + +Version 4 of the ABI was used by GCC 3.0 and 3.1; it is no longer +supported. + +Version 5 of the ABI is common to GCC 3.2 and 3.3; GCC 3.3 +provides libstdc++5. It is only supported as a runtime library. + +Version 6 of the ABI is common to GCC 3.4 and later; GCC 4.3 provides +libstdc++6. + +libstdc++6 in GCC 5 provides a dual ABI, see https://wiki.debian.org/GCC5. + +Bugs +---- + +Before submitting a bug, please read README.Bugs in this directory. + +Feedback appreciated +-------------------- + +Feedback about this document is appreciated; preferably as a Severity: +wishlist bug against Package: gcc . For general discussions and +questions, subscribe and/or email the debian-gcc@lists.debian.org mailing +list. + +Maintainers of these packages +----------------------------- + +Matthias Klose <doko@debian.org> +Ludovic Brenta <ludovic@ludovic-brenta.org> (gnat) +Iain Buclaw <ibuclaw@ubuntu.com> (gdc) +Aurelien Jarno <aurel32@debian.org> (mips*-linux) +Aurelien Jarno <aurel32@debian.org> (s390X*-linux) + +Former and/or inactive maintainers of these packages +---------------------------------------------------- + +Falk Hueffner <falk@debian.org> (alpha-linux) +Ray Dassen <jdassen@debian.org> +Jeff Bailey <jbailey@nisa.net> (hurd-i386) +Joel Baker <fenton@debian.org> (netbsd-i386) +Randolph Chung <tausq@debian.org> (ia64-linux) +Philip Blundell <pb@debian.org> (arm-linux) +Ben Collins <bcollins@debian.org> (sparc-linux) +Dan Jacobowitz <dan@debian.org> (powerpc-linux) +Thiemo Seufer <ths@networkno.de> (mips*-linux) +Matt Taggart <taggart@carmen.fc.hp.com> (hppa-linux) +Gerhard Tonn <GerhardTonn@swol.de> (s390-linux) +Roman Zippel <zippel@linux-m68k.org> (m68k-linux) +Arthur Loiret <arthur.loiret@gmail.com> (gdc) + +=============================================================================== + |