How do I use the latest GCC on Ubuntu?
Solution 1:
The best way to correctly install gcc-4.9 and set it as your default gcc version use:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9 g++-4.9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9
The --slave
, with g++
, will cause g++
to be switched along with gcc
, to the same version. But, at this point gcc-4.9 will be your only version configured in update-alternatives
, so add 4.8 to update-alternatives
, so there actually is an alternative, by using:
sudo apt-get install gcc-4.8 g++-4.8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8
Then you can check which one that is set, and change back and forth using:
sudo update-alternatives --config gcc
If you have an issue with update-alternatives gcc priority 60 not being higher than previous versions installed you can use the previous update-alternatives --config gcc command to check installed versions and use:
sudo update-alternatives --remove gcc
Or:
sudo update-alternatives --remove-all gcc
NOTE: You could skip installing the PPA Repository and just use /usr/bin/gcc-4.9-base
but I prefer using the fresh updated toolchains.
For GCC 5.X or 6, the packages (and correspondingly, the commands) are just called gcc-5
, gcc-6
, etc. This is due to the change in GCC's version scheme, where 5.1 is the first GCC 5 release, and future 5.X releases are for bug fixes.
Solution 2:
Use the Toolchain Test Builds PPA:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9
I don't think GCC 4.9 is fully available for Ubuntu 14.04 yet. The base package (gcc-4.9-base) and the GCC Go 4.9 compiler (gccgo-4.9) are available, but the other frontends are not. I don't know why.
Solution 3:
Ultimate mega master compatibility table
OK let's do this:
GCC clang
+-------------------+-----------------------+
| 11 10 9 8 7 6 5 4 | 13 12 11 10 9 8 7 6 5 |
+-------+-------------------+-----------------------+
| 21.10 | D M M M | D M M M M |
| 21.04 | M D M M M | D M M M |
| 20.10 | D M M M | D M M M M M |
| 20.04 | P D M M | D M M M M |
| 19.10 | D M M | |
| 19.04 | M D M M | |
| 18.10 | D M M M | |
| 18.04 | P P M D M M | M M M D M |
| 16.04 | P P P P D M | |
+-------+-------------------+-----------------------+
-
D: Default GCC
sudo apt-get update sudo apt-get install gcc g++ gcc --version
Whatever the
gcc
package aliases to: https://packages.ubuntu.com/search?keywords=gcc and also present in manifests: How do I list the default installed packages? -
M: Present in Main repo
sudo apt-get update sudo apt-get install gcc-X g++-X gcc-X --version
All Ubuntu versions that have a hit for a given GCC version, e.g. for GCC 7: https://packages.ubuntu.com/search?keywords=gcc-7 or clang 7 https://packages.ubuntu.com/search?keywords=clang-7
The minor versions of these packages can get updated from time to time, e.g. 8.3.0 to 8.4.0.
-
P:
ppa:ubuntu-toolchain-r/test
, which is owned by Ubuntu people and therefore can be trusted to not be a virus, although it is possibly unstable:sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt-get update sudo apt-get install gcc-X g++-X gcc-X --version
Full list: https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test
The minor versions of these packages can get updated from time to time, e.g. 8.3.0 to 8.4.0.
All the questions:
- install gcc-9 on Ubuntu 18.04?
- How to install gcc-7 or clang 4.0?
- install gcc-9 on Ubuntu 18.04?
- What are the GCC and clang versions available in Ubuntu 18.04?
How to set a non-default GCC as the default?
E.g., you installed /usr/bin/gcc-7
but you want to use that instead of /usr/bin/gcc
when you run gcc main.c
.
Use sudo update-alternatives
as mentioned in other answers: https://askubuntu.com/a/581497/52975 It creates the required symlinks for you.
See also: What exactly does `update-alternatives` do?
How to build your own toolchain from source
If even the PPA is not old/new enough for you, see this:
- https://stackoverflow.com/questions/847179/multiple-glibc-libraries-on-a-single-host/52454603#52454603
- https://stackoverflow.com/questions/26305738/can-i-build-gcc-for-arm-with-an-x64-one/26306591#26306591
Older GCC version questions
- Ubuntu 20.04 - gcc version lower than gcc-7
- How to use an older version of GCC