Installing newer GCC versions in Ubuntu

From Tuxamito
Revision as of 12:49, 6 March 2018 by Daniel (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

It is often useful to have installed never versions of the compiler in our systems as they often provide better performance and extended features, such as support for newer language features and better debugging information. In the case of ubuntu the new GCC stable packages can be obtained from the Ubuntu Toolchain PPA.

To install them add the ppa repository and update the APT database:

$ sudo add-apt-repository ppa:ubuntu-toolchain-r/test
$ sudo apt-get update

Then install the desired GCC and G++ versions. At the moment of writing this page the latest available version is 7.2.0 (that correspond to the packages gcc-7 g++-7). Check if newer versions are available.

$ sudo apt-get install gcc g++ gcc-5 g++-5 gcc-6 g++-6 gcc-7 g++-7

Now the different compiler versions are available in the system by using different command names (that is, gcc-5, gcc-6, etc.), but the default version, the one that is executed with the command gcc, will still be the previous one. To change the default version executed with the gcc command we have to configure the alternatives in the system. First lets remove any previous configuration with:

$ sudo update-alternatives --remove-all gcc

Which can show the error update-alternatives: error: no alternatives for gcc if no previous alternatives were configured. The configure the alternatives modifying it accordingly to the versions available on your system. Each alternative has a priority associated with it. When a link group is in automatic mode, the alternatives pointed to by members of the group will be those which have the highest priority.

$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 90 --slave /usr/bin/g++ g++ /usr/bin/g++-5
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 80 --slave /usr/bin/g++ g++ /usr/bin/g++-6
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 70 --slave /usr/bin/g++ g++ /usr/bin/g++-7

Once the different alternatives for the gcc package have been created then it can be configured with:

$ sudo update-alternatives --config gcc

And a menu similar to this will appear. Select, for example, the option 3 to set as default gcc-7 instead of gcc-5:

There are 3 choices for the alternative gcc (providing /usr/bin/gcc).

  Selection    Path            Priority   Status
------------------------------------------------------------
* 0            /usr/bin/gcc-5   90        auto mode
  1            /usr/bin/gcc-5   90        manual mode
  2            /usr/bin/gcc-6   80        manual mode
  3            /usr/bin/gcc-7   70        manual mode

Press <enter> to keep the current choice[*], or type selection number: 3
update-alternatives: using /usr/bin/gcc-7 to provide /usr/bin/gcc (gcc) in manual mode

Then test the version executed with the gcc command:

$ g++ -v
....
gcc version 7.2.0 (Ubuntu 7.2.0-1ubuntu1~16.04)