Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
How to install latest gcc on Ubuntu LTS (12.04, 14.04, 16.04)
These commands are based on a askubuntu answer http://askubuntu.com/a/581497
To install gcc-6 (gcc-6.1.1), I had to do more stuff as shown below.
USE THOSE COMMANDS AT YOUR OWN RISK. I SHALL NOT BE RESPONSIBLE FOR ANYTHING.
ABSOLUTELY NO WARRANTY.
If you are still reading let's carry on with the code.
sudo apt-get update && \
sudo apt-get install build-essential software-properties-common -y && \
sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y && \
sudo apt-get update && \
sudo apt-get install gcc-snapshot -y && \
sudo apt-get update && \
sudo apt-get install gcc-6 g++-6 -y && \
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 60 --slave /usr/bin/g++ g++ /usr/bin/g++-6 && \
sudo apt-get install gcc-4.8 g++-4.8 -y && \
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8;
When completed, you must change to the gcc you want to work with by default. Type in your terminal:
sudo update-alternatives --config gcc
To verify if it worked. Just type in your terminal
gcc -v
If everything went fine you should see gcc 6.1.1 by the time I am writing this gist
Happy coding!
See my blog post at https://www.application2000.com
@Kigerago
Copy link

Thx

@JC3
Copy link

JC3 commented Dec 28, 2020

GCC 10.1.0 on Ubuntu 16.04 & 18.04 & 20.04:

sudo apt-get update -y && 
sudo apt-get upgrade -y && 
sudo apt-get dist-upgrade -y && 
sudo apt-get install build-essential software-properties-common -y && 
sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y && 
sudo apt-get update -y && 
sudo apt-get install gcc-10 g++-10 -y && 
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 60 --slave /usr/bin/g++ g++ /usr/bin/g++-10 && 
sudo update-alternatives --config gcc

select gcc-10

Doesn't seem to work for GCC 10 on 16.04:

$ sudo add-apt-repository ppa:ubuntu-toolchain-r/test
 Toolchain test builds; see https://wiki.ubuntu.com/ToolChain

 More info: https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test
Press [ENTER] to continue or ctrl-c to cancel adding it

gpg: keyring `/tmp/tmpnogzdmz6/secring.gpg' created
gpg: keyring `/tmp/tmpnogzdmz6/pubring.gpg' created
gpg: requesting key BA9EF27F from hkp server keyserver.ubuntu.com
gpg: /tmp/tmpnogzdmz6/trustdb.gpg: trustdb created
gpg: key BA9EF27F: public key "Launchpad Toolchain builds" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
OK

$ sudo apt-get update
Hit:1 http://us.archive.ubuntu.com/ubuntu xenial InRelease
Hit:2 http://us.archive.ubuntu.com/ubuntu xenial-updates InRelease
Hit:3 http://us.archive.ubuntu.com/ubuntu xenial-backports InRelease
Hit:4 https://dl.winehq.org/wine-builds/ubuntu xenial InRelease
Hit:5 http://security.ubuntu.com/ubuntu xenial-security InRelease
Hit:6 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu xenial InRelease
Hit:7 https://download.sublimetext.com apt/stable/ InRelease
Reading package lists... Done

$ sudo apt-cache search ^gcc-[0-9]+$
gcc-5 - GNU C compiler
gcc-6 - GNU C compiler
gcc-7 - GNU C compiler
gcc-8 - GNU C compiler
gcc-9 - GNU C compiler

$ sudo apt-get install gcc-10 g++-10
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package gcc-10
E: Unable to locate package g++-10
E: Couldn't find any package by regex 'g++-10'

@libklein
Copy link

Yes, gcc-10 is not available on xenial, even in the toolchain repo (see the filter dropdown):

Screenshot_2020-12-30 Toolchain test builds “PPA for Ubuntu Toolchain Uploads (restricted)” team

@tnwjd7732
Copy link

Thank you very much!

@kiril-kirov
Copy link

kiril-kirov commented Mar 25, 2021

gcc-9[-multilib] and g++-9[-multilib] are also available for Ubuntu 12.04 LTS!

I extended the steps above, as they complain with g++ can't be slave of gcc + some additions and beautifications:

#!/bin/bash

GCC_GXX_VERSION=9
gcc_alternatives=(gcc cc)
gxx_alternatives=(g++ c++ cpp)
all_alternatives=("${gcc_alternatives[@]}" "${gxx_alternatives[@]}")

remove_alternatives() {
    alternatives=("$@")
    for alt in "${alternatives[@]}"; do
        sudo update-alternatives --remove-all $alt || continue
    done
}

install_and_set_alternatives() {
    path=$1
    shift
    alternatives=("$@")
    for alt in "${alternatives[@]}"; do
        sudo update-alternatives --install /usr/bin/$alt $alt $path 100
        sudo update-alternatives --set $alt $path
    done
}

print_green() {
    args=$@
    echo -e "\033[0;32m$args\033[0m"
}

check_versions() {
    alternatives=("$@")
    for alt in "${alternatives[@]}"; do
        print_green "$alt\t->\t`$alt --version | head -n 1`"
    done
}

install_gcc_gxx() {
    sudo apt-get update -y &&
    sudo apt-get upgrade -y &&
    sudo apt-get dist-upgrade -y &&
    sudo apt-get install build-essential software-properties-common -y &&
    sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y &&
    sudo apt-get update -y &&
    sudo apt-get install gcc-$GCC_GXX_VERSION g++-$GCC_GXX_VERSION -y
}

install_gcc_gxx
remove_alternatives "${all_alternatives[@]}"
install_and_set_alternatives "/usr/bin/gcc-$GCC_GXX_VERSION" "${gcc_alternatives[@]}"
install_and_set_alternatives "/usr/bin/g++-$GCC_GXX_VERSION" "${gxx_alternatives[@]}"

echo
echo "Check the following versions:"
check_versions "${all_alternatives[@]}"

@ivanmara555
Copy link

GCC 11.x on Ubuntu 18.04 & 20.04:

sudo apt-get update -y &&
sudo apt-get upgrade -y &&
sudo apt-get dist-upgrade -y &&
sudo apt-get install build-essential software-properties-common -y &&
sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y &&
sudo apt-get update -y &&
sudo apt-get install gcc-11 g++-11 -y &&
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 60 --slave /usr/bin/g++ g++ /usr/bin/g++-11 &&
sudo update-alternatives --config gcc

select gcc-11

@AndiHairy97
Copy link

ami@ami:~$ sudo apt-get update && \

sudo apt-get install build-essential software-properties-common -y &&
sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y &&
sudo apt-get update &&
sudo apt-get install gcc-snapshot -y &&
sudo apt-get update &&
sudo apt-get install gcc-6 g++-6 -y &&
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 60 --slave /usr/bin/g++ g++ /usr/bin/g++-6 &&
sudo apt-get install gcc-4.8 g++-4.8 -y &&
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8;
[sudo] password for ami:
Get:1 http://dl.google.com/linux/earth/deb stable InRelease [1,807 B]
Ign:1 http://dl.google.com/linux/earth/deb stable InRelease
Hit:2 http://ubuntu.mirror.myduniahost.com/ubuntu xenial InRelease
Hit:3 http://ubuntu.mirror.myduniahost.com/ubuntu xenial-updates InRelease
Hit:4 http://ubuntu.mirror.myduniahost.com/ubuntu xenial-backports InRelease
Get:5 https://linux.teamviewer.com/deb stable InRelease [11.9 kB]
Hit:6 http://ubuntu.mirror.myduniahost.com/ubuntu xenial-security InRelease
Get:7 https://linux.teamviewer.com/deb stable/main amd64 Packages [11.2 kB]
Get:8 https://linux.teamviewer.com/deb stable/main i386 Packages [11.0 kB]
Get:9 http://deb.anydesk.com all InRelease [5,588 B]
Fetched 41.5 kB in 1s (30.4 kB/s)
Reading package lists... Done
W: GPG error: http://dl.google.com/linux/earth/deb stable InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 78BD65473CB3BD13
W: The repository 'http://dl.google.com/linux/earth/deb stable InRelease' is not signed.
N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
N: See apt-secure(8) manpage for repository creation and user configuration details.
N: Skipping acquire of configured file 'main/binary-i386/Packages' as repository 'http://dl.google.com/linux/earth/deb stable InRelease' doesn't support architecture 'i386'
Reading package lists... Done
Building dependency tree
Reading state information... Done
build-essential is already the newest version (12.1ubuntu2).
software-properties-common is already the newest version (0.96.20.10).
software-properties-common set to manually installed.
The following additional packages will be installed:
gcc-doc
The following packages will be upgraded:
gcc-doc
1 upgraded, 0 newly installed, 0 to remove and 84 not upgraded.
1 not fully installed or removed.
Need to get 0 B/3,448 B of archives.
After this operation, 10.2 kB disk space will be freed.
(Reading database ... 864713 files and directories currently installed.)
Preparing to unpack .../gcc-doc_4%3a5.3.1-1ubuntu1_amd64.deb ...
install-info: No dir file specified; try --help for more information.
dpkg: warning: subprocess old pre-removal script returned error exit status 1
dpkg: trying script from the new package instead ...
dpkg: error processing archive /var/cache/apt/archives/gcc-doc_4%3a5.3.1-1ubuntu1_amd64.deb (--unpack):
there is no script in the new version of the package - giving up
install-info: No dir file specified; try --help for more information.
dpkg: error while cleaning up:
subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
/var/cache/apt/archives/gcc-doc_4%3a5.3.1-1ubuntu1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

please help me? im facing this problem for a very llong time and untill now it still not fixed

@clarkdunson
Copy link

Thank you very much!

@YJ-20
Copy link

YJ-20 commented Aug 25, 2021

good!

@pachiras
Copy link

Thank you! You saved me!

@bocash
Copy link

bocash commented May 29, 2022

Thank you!
gcc version 9.4.0

@PierrickPochelu
Copy link

Thanks @peterhanneman

GCC 7.1 on Ubuntu 14.04 & 16.04:

sudo apt-get update -y && \
sudo apt-get upgrade -y && \
sudo apt-get dist-upgrade -y && \
sudo apt-get install build-essential software-properties-common -y && \
sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y && \
sudo apt-get update -y && \
sudo apt-get install gcc-7 g++-7 -y && \
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 60 --slave /usr/bin/g++ g++ /usr/bin/g++-7 && \
sudo update-alternatives --config gcc

I got gcc/g++ version 11.1.0 with similar procedure on 18.04 . Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment