I tried to install arm-none-eabi-gdb as a part of gcc-arm-embedded. I added PPA:

sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa

and executed:

sudo apt install gcc-arm-embedded 

It responded with:

Err:8 http://ppa.launchpad.net/team-gcc-arm-embedded/ppa/ubuntu focal Release
  404  Not Found [IP: 80]

As far as I understand - gcc-arm-embedded doesn't have a version for Ubuntu 20. So I've changed release version for this PPA in Software & Updates to bionic so that I can avoid error 404.

Even though ubuntu 20 has libisl22, now I have unmet dependencies when I try to install gcc-arm-embedded:

The following packages have unmet dependencies:
 gcc-arm-embedded : Depends: libisl15 (>= 0.15) but it is not installable
E: Unable to correct problems, you have held broken packages.

I was unable to find a way to install requested version of libisl, as apt offers only two versions - libisl22 and libisl-dev and both are not accepted by installer.

I need advice on how to install arm-none-eabi-gdb. Thank you!

  • Not really. I've found out, that there is a version for focal on launchpad: launchpad.net/ubuntu/focal/+source/gcc-arm-none-eabi But I have no idea why ppa doesn't give access to it. May 24, 2020 at 21:50
  • 2
    @AleksanderKhoroshko Although they have package for focal but they do miss the folder in dists and release file. Release file contains the path of the deb in the pool which is to be fetched when requested. Neither they uploaded the package in pool of archives. You may consider contacting the PPA maintainer regarding the same.
    – Kulfy
    May 25, 2020 at 18:23
  • 1
    @Kulfy thank you for your effort! It turned out that PPA maintainer decided to deprecate this PPA (it is in the notes on their website), so now non-PPA way of installation is the only way to go. I've made an answer below with instructions. May 26, 2020 at 19:53

4 Answers 4


It turned out that ARM decided to make our life easier (sarcasm) by deprecating the use of PPA - their page at launchpad now has an anouncement: "... all new binary and source packages will not be released on Launchpad henceforth ...".

So, to make use of their latest arm-none-eabi-gdb you have to install gcc-arm-embedded manually.

Remove arm-none-eabi-gcc from your system:

sudo apt remove gcc-arm-none-eabi

Download latest version (Linux x86_64 Tarball) from their website, check its MD5. Unpack it into some directory. I used /usr/share/ :

sudo tar xjf gcc-arm-none-eabi-your-version.bz2 -C /usr/share/

Create links so that binaries are accessible system-wide:

sudo ln -s /usr/share/gcc-arm-none-eabi-your-version/bin/arm-none-eabi-gcc /usr/bin/arm-none-eabi-gcc 
sudo ln -s /usr/share/gcc-arm-none-eabi-your-version/bin/arm-none-eabi-g++ /usr/bin/arm-none-eabi-g++
sudo ln -s /usr/share/gcc-arm-none-eabi-your-version/bin/arm-none-eabi-gdb /usr/bin/arm-none-eabi-gdb
sudo ln -s /usr/share/gcc-arm-none-eabi-your-version/bin/arm-none-eabi-size /usr/bin/arm-none-eabi-size
sudo ln -s /usr/share/gcc-arm-none-eabi-your-version/bin/arm-none-eabi-objcopy /usr/bin/arm-none-eabi-objcopy

Install dependencies. ARM's "full installation instructions" listed in readme.txt won't tell you what dependencies are - you have to figure it out by trial and error. In my system I had to manually create symbolic links to force it to work:

sudo apt install libncurses-dev
sudo ln -s /usr/lib/x86_64-linux-gnu/libncurses.so.6 /usr/lib/x86_64-linux-gnu/libncurses.so.5
sudo ln -s /usr/lib/x86_64-linux-gnu/libtinfo.so.6 /usr/lib/x86_64-linux-gnu/libtinfo.so.5

Check if it works:

arm-none-eabi-gcc --version
arm-none-eabi-g++ --version
arm-none-eabi-gdb --version
arm-none-eabi-size --version
  • 1
    @AleksanderKhoroshko OMG, we've been unwittingly using old tools for ages. Thank you thank you! Bit evil of ARM to leave the old stuff up there... hmm. Ok, I've just raised a flag to say your question should be reopened, because the listed alternative qqs are nothing to do with this specific problem.
    – SusanW
    Dec 12, 2020 at 17:57
  • I tried this package"gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2", needn't manually create symbolic links, the result for "Check if it works: " was OK.
    – MianQi
    Feb 13, 2021 at 4:19
  • How do I use the ubuntu AUR? Feb 16, 2021 at 18:38
  • 4
    Instead of the symlinks for libncurses you can directly install it sudo apt install libncurses5
    – debuti
    Jun 16, 2021 at 21:49
  • 1
    I suggest symlinking everything in the bin folder -- sudo ln -s /usr/share/gcc-arm-none-eabi-your-version/bin/* /usr/bin/ Aug 9, 2021 at 21:40

The answer from Aleksander solved 99 percent of my issues, however after running make I got one error arm-none-eabi-objcopy : command not found. So I had do make one more symlink to get the files generated.

sudo ln -s /usr/share/gcc-arm-none-eabi-your-version/bin/arm-none-eabi-objcopy /usr/bin/arm-none-eabi-objcopy

I tried to add this as comment to the answer but I don't have enough points to do that.

  • 1
    Welcome to Ask Ubuntu! I've gone ahead and added your suggestion to the answer you referred to. Please do not leave comments in answers. Instead, you can post answers that do not require clarification from the question author, or, if you have a suggestion, edit the post to incorporate your suggestion. Apr 12 at 1:55

I've wrapped the script here by @kmhallen into a semi-automated debian package builder here: https://gitlab.com/alelec/arm-none-eabi-gcc-deb/-/releases

Installing a package like this means you can skip the tedious manual symlinks to put tools on the path, and just as importantly you can uninstall / upgrade to newer packages (assuming I remember to make more packages)


The toolchain is now only provided on their website: https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads

After extracting, add the path to the bin folder to the system path:

cd /opt
wget "https://developer.arm.com/-/media/Files/downloads/gnu-rm/10.3-2021.10/gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2"
tar -jxf gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
rm gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
export PATH="/opt/gcc-arm-none-eabi-10.3-2021.10/bin:$PATH"

Alternatively, here is a script to generate a Debian package and install it to the /usr directory. This way you don't have to export the path all the time, and it can be removed with sudo apt purge gcc-arm-none-eabi


echo "Creating gcc-arm-none-eabi debian package version $VER"

echo "Entering temporary directory..."
cd /tmp

echo "Downloading..."
curl -fSL -A "Mozilla/4.0" -o gcc-arm-none-eabi.tar "$URL"

echo "Extracting..."
tar -xf gcc-arm-none-eabi.tar
rm gcc-arm-none-eabi.tar

echo "Generating debian package..."
mkdir gcc-arm-none-eabi
mkdir gcc-arm-none-eabi/DEBIAN
mkdir gcc-arm-none-eabi/usr
echo "Package: gcc-arm-none-eabi"          >  gcc-arm-none-eabi/DEBIAN/control
echo "Version: $VER"                       >> gcc-arm-none-eabi/DEBIAN/control
echo "Architecture: amd64"                 >> gcc-arm-none-eabi/DEBIAN/control
echo "Maintainer: maintainer"              >> gcc-arm-none-eabi/DEBIAN/control
echo "Description: Arm Embedded toolchain" >> gcc-arm-none-eabi/DEBIAN/control
mv gcc-arm-none-eabi-*/* gcc-arm-none-eabi/usr/
dpkg-deb --build --root-owner-group gcc-arm-none-eabi

echo "Installing..."
sudo apt install ./gcc-arm-none-eabi.deb -y --allow-downgrades

echo "Removing temporary files..."
rm -r gcc-arm-none-eabi*

echo "Done."

Check if it works:

arm-none-eabi-gcc --version

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.