To update GCC on your system, the method depends on your operating system and desired version:
Ubuntu/Debian
Use APT (Recommended for most users):
Ubuntu 24.04 and later include GCC 14 in the Universe repository. Enable it and install:sudo add-apt-repository universe sudo apt update sudo apt install gcc-14 g++-14Verify with
gcc-14 --version.Use PPA for newer versions (e.g., GCC 15+):
Theppa:ubuntu-toolchain-r/testPPA provides updated builds. Add it and install:sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt update sudo apt install gcc-15 g++-15Compile from source (for bleeding-edge versions like GCC 16):
Follow the guide from Medium to build GCC 15.1 or later from source usinggit,configure, andmake. After building, register the new compiler withupdate-alternatives:sudo update-alternatives --install /usr/bin/gcc gcc /opt/gcc-15/bin/gcc 100 sudo update-alternatives --install /usr/bin/g++ g++ /opt/gcc-15/bin/g++ 100
Windows
Use GCC-win64 (e.g., GCC 14):
Install via Geeky Script's guide using MinGW-w64 with GCC 14. Download the latest release from mingw-w64 or use tools like MSYS2.
Latest GCC Version
The latest stable release is GCC 15.2, released on August 8, 2025.
Development for GCC 16.0 is ongoing, with regression fixes and documentation updates as of January 2026.
Note: Always back up your environment before switching default compilers. Use
update-alternativesto manage multiple versions safely.
This is a common pattern in linux. When there are multiple versions of the same program installed, though the executables are all present in the /usr/bin/ directory, only one of them is "visible" as that program. For example, if you install gcc-9 and gcc-10, both executables are present as /usr/bin/gcc-9 and /usr/bin/gcc-10 but only one of them is visible as gcc. This happens by symlinking a preferred version to the same directory as /usr/bin/gcc. In ubuntu 20.04, the preferred version is gcc-9 and so, gcc-9 is symlinked as gcc.
You can check this by running the following command.
$ which gcc | xargs file
The output will be
/usr/bin/gcc: symbolic link to gcc-9
There are a few things you can do to use gcc-10 as your c compiler.
- Directly call the
gcc-10executable. Instead of usinggcc <code.c>, callgcc-10 <code.c>. - You can manually symlink
gcc-10as the preferredgcc. Assuming you did not modify the system paths, the following command can be used.
# ln -s /usr/bin/gcc-10 /usr/local/bin/gcc
This works because, by default, the executables in /usr/local/bin/ take precedence over /usr/bin/.
- If you are using bash, you can create an alias for
gccasgcc-10. Add the following line to your.bashrc.
alias gcc="gcc-10"
Remember to relaunch bash or source ~/.bashrc.
- Using
update-alternatives(Thanks to @ted-lyngmo for pointing it out). Debian based distributions supply a separate program, that can make symlinking easier / more functional. Read more usingman update-alternatives. To usegcc-10as the preferredgcc, use the following command.
# update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 60
The above command says, /usr/bin/gcc is the link needed and the name is gcc, the target executable is /usr/bin/gcc-10 and it has a priority of 60.
This links gcc to /etc/alternatives/gcc, which itself is a symlink to /usr/bin/gcc-10. If a higher priority program is added to update-alternatives, /etc/alternatives/gcc points to the higher priority program.
If you don't have any specific reason, I would also recommend to upgrade to a newer ubuntu version, so that the default gcc is a newer one.
I read on the gcc website that version 9.4 is more up-to-date than some 10.x versions.
With newer gcc versions, new features are added. Support for newer c/c++ standards are also added. Eg. You can read the changes for gcc-10 here. But people still need gcc-9 because some programs only build with gcc-9. So, GNU maintains gcc-9 (and much older versions) for a long time. Bugs are fixed, and newer releases are made. This can happen after the release of a newer gcc version. So, it is very much possible that a version of gcc-9 is newer than a version of gcc-10.
Should I update all the things GCC says?
yum - How to update the version of gcc-c++ on Fedora? - Unix & Linux Stack Exchange
Need help updating GCC/G++ from MinGW
GCC update completely killed RAM RGB control
What is the default GCC version on each Ubuntu LTS release?
Can I have multiple GCC versions installed at the same time?
Does GCC come pre-installed on Ubuntu?
Videos
Hey guys,
I've read everywhere that GCC is dog water, but wanted to double check if I should or shouldn't update all the things it is telling me, for example:
I just built this PC and everything is working fine, so am a bit cautious of this. Also, for some reason on my gb 4070 aorus master, my gpu is not even being detected in rgb fusion 2.0.
Any ideas?
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.
Ultimate mega master compatibility table
OK let's do this:
GCC clang
+-------------------------------------+-------------------------------------------------+
| 15 14 13 12 11 10 9 8 7 6 5 4 | 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 |
+-------+-------------------------------------+-------------------------------------------------+
| 25.10 | D M M M M | D M M M |
| 25.04 | D M M M | D M M M |
| 24.10 | D M M M | D M M M M M |
| 24.04 | M D M M M M | D M M M M |
| 23.10 | D M M M M | M D M M M |
| 23.10 | D M M M M | D M M M |
| 23.04 | M D M M M | M D M M |
| 22.10 | D M M M | D M M |
| 22.04 | P M D M M | D M M M |
| 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 --versionWhatever the
gccpackage 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 --versionAll 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 within a single Ubuntu version (on the
.revisions?), e.g. 8.3.0 to 8.4.0 so we are not keeping track of that.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 --versionFull 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.
Blank spaces on the table mean either "no package available" or "I didn't bother to check". Notably I've not been looking into PPA packages too thoroughly. Edits accepted.
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
Hello, I installed the compilers about a month ago with MingGW, little did I know they were out of date, around version 6. I can't find a good tutorial on how to update them on windows so if someone could help me out that would be great.