I found the solution based on the discussion available at https://unix.stackexchange.com/questions/377345/installing-arm-none-eabi-gcc and the documentation available on https://mynewt.apache.org/latest/get_started/native_install/cross_tools.html#installing-the-arm-cross-toolchain.
The name and structure of the software changed over time. The arm-none-eabi-gcc is gcc-arm-none-eabi now, and so on.
Copy$ sudo apt-get remove binutils-arm-none-eabi gcc-arm-none-eabi
$ sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install gcc-arm-none-eabi
$ sudo apt-get install gdb-arm-none-eabi
And finally, to verify the downloads, you can run the following commands:
Copyarm-none-eabi-gcc --version
arm-none-eabi-g++ --version
arm-none-eabi-size --version
Answer from Aatif Shaikh on Stack OverflowI found the solution based on the discussion available at https://unix.stackexchange.com/questions/377345/installing-arm-none-eabi-gcc and the documentation available on https://mynewt.apache.org/latest/get_started/native_install/cross_tools.html#installing-the-arm-cross-toolchain.
The name and structure of the software changed over time. The arm-none-eabi-gcc is gcc-arm-none-eabi now, and so on.
Copy$ sudo apt-get remove binutils-arm-none-eabi gcc-arm-none-eabi
$ sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install gcc-arm-none-eabi
$ sudo apt-get install gdb-arm-none-eabi
And finally, to verify the downloads, you can run the following commands:
Copyarm-none-eabi-gcc --version
arm-none-eabi-g++ --version
arm-none-eabi-size --version
In /etc/apt/sources.list, make sure the lines with universe are uncommented.
Re-run apt update and (as long as you have a working internter connection) it should work.
apt - How to install a functional ARM cross-GCC toolchain on Ubuntu 18.04 (Bionic Beaver) - Unix & Linux Stack Exchange
ubuntu Unable to locate package gcc-arm-embedded
arm-none-eabi-gcc command not found
Build configuration for the pico (and other arms)
I got it working on Kubuntu 19.10 installing:
apt install libncurses5
Not installing the "-dev", development or ":i386", 32-bit versions of the library.
I installed Ubuntu 18.10 desktop (Cosmic Cuttlefish) from here, but I was unable to install gcc-arm-none-eabi:
ubuntu@ubuntu:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.10
Release: 18.10
Codename: cosmic
ubuntu@ubuntu:~$ sudo apt-get install gcc-arm-none-eabi
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package gcc-arm-none-eabi
I then installed libncurses5-dev and gcc-linaro-7.3.1-2018.05-x86_64_arm and got the same .so-related error you got.
Since I don't have this issue with 16.04 nor with 18.04, I would suggest you compile the latest GDB from source in order to avoid what may be a package/dynamic link library mismatch issue in Ubuntu 18.10:
sudo apt-get install build-essential libncurses5-dev libexpat1-dev texinfo-doc-nonfree
pushd /tmp
wget -qO- ftp://ftp.gnu.org/gnu/gdb/gdb-8.2.tar.xz | tar Jxv
mkdir gdb
cd gdb
../gdb-8.2/configure --enable-tui --with-expat --prefix=/usr/local --target=arm-eabi --program-prefix=arm-eabi-
make all
sudo make install
popd
Install will fail because makeinfo is missing, even though I installed texinfo-doc-nonfree, but binaries will be installed:
ls /usr/local/bin
arm-eabi-gdb arm-eabi-gdb-add-index arm-eabi-run
And arm-eabi-gdb will launch properly this time:
arm-eabi-gdb --version
GNU gdb (GDB) 8.2
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
arm-eabi-gdb -tui will work as well - I encourage you to use the TUI mode. You should like it as much as I do - I guess.
As far as I can see, there are two options:
- Install an old version (as pointed out by Chaos)
- Install gdb-multiarch, which actually worked for me.
I had the same question, and googled some more. It seems that with modern GDB you no longer need a GDB for your specific architecture. Just use GDB.
(seems to work on my older 16.04 workstation as well. I've been typing arm-none-eabi-gdb all those years, while just "gdb" would've worked just as well! .....)
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
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)
fixed, using:
sudo apt-get install gcc-arm*
Are you compiling on a 64-bit OS? Try:
sudo apt-get install ia32-libs
I had the same problem when trying to compile the Raspberry Pi kernel. I was cross-compiling on Ubuntu 12.04 64-bit and the toolchain requires ia32-libs to work on on a 64-bit system.
See http://hertaville.com/2012/09/28/development-environment-raspberry-pi-cross-compiler/
The Ubuntu package names are gcc-arm-linux-gnueabi/gcc-arm-linux-gnueabihf.
For building the kernel, which one you use does not make much difference. For building anything else, "gnueabihf" is the hard-float version. For any modern ARM processor (this statement excludes the Raspberry PI), this is the one you would want.
Download arm-2013.05-24-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 from https://sourcery.mentor.com/GNUToolchain/
or https://sourcery.mentor.com/sgpp/lite/arm/portal/subscription?@template=lite
Get correct version of the arm-none-linux-gnueabi toolchain (i.e. targetting
GNU/Linuxrather thanEABI).untar it
tar xvf arm-2013.05-24-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2open bashrc
vi .bashrcat the end add below comand
export PATH=$PATH:{path to toolchain}arm-2013.05/bine.g
export PATH=$PATH:/home/vinay/under_linux/arm-2013.05/binsave it and quit the terminal.
then you can cross-compile without everytime export.
Also take of correct toolchain there are two toolchain available choose according to your requirement.
Cross compile error "arm-none-eabi-g++ cannot find entry symbol"