I recently installed
Ubuntu 18.04, Linux foobar-VirtualBox 4.15.0-23-generic #25-Ubuntu SMP Wed May 23 18:02:16 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux on a VM. I want to cross-compile applications for Cortex-M4F CPUs with hard floating points, therefore I have installed the package
15:6.3.1+svn253039-1build1 as well as
libnewlib-arme-none-eabi at version
There is a linker error due to a conflict between my object files using hard floats and the libs using soft floats. Some research indicates that this is a known Ubuntu 18.04 issue :
Note that I do provide the correct compiler and linker flags, and this project correctly builds with the Windows cross-toolchain from GNU ARM Embedded. I think it'd be pointless to paste here the complete error. If someone thinks it'd be required I'd be glad to edit this question.
What I already tried
From my basic understanding, I have two solutions to get a functional gcc ARM toolchain:
gcc-arm-none-eabito return to a working version
gcc-arm-none-eabiand install instead
gcc-arm-embeddedfrom the team gcc ARM embedded's PPA (Install gcc-arm-embedded from the PPA)
Downgrading gcc-arm-none-eabi, but to what ?
In order to downgrade
gcc-arm-none-eabi I have to find a previous version in my package manager. I first updated the package list with
sudo apt update, then I typed:
sudo apt show gcc-arm-none-eabi
Package: gcc-arm-none-eabi Version: 15:6.3.1+svn253039-1build1 Priority: extra Section: universe/devel Origin: Ubuntu Maintainer: Ubuntu Developers Original-Maintainer: Agustin Henze Bugs: https://bugs.launchpad.net/ubuntu/+filebug Installed-Size: 307 MB Depends: libc6 (>= 2.15), libgcc1 (>= 1:3.0), libgmp10, libisl15 (>= 0.15), libmpc3, libmpfr6 (>= 3.1.3), libstdc++6 (>= 5), zlib1g (>= 1:1.1.4), binutils-arm-none-eabi Recommends: libnewlib-arm-none-eabi Homepage: http://gcc.gnu.org/ Download-Size: 24.3 MB APT-Sources: http://ch.archive.ubuntu.com/ubuntu bionic/universe amd64 Packages Description: GCC cross compiler for ARM Cortex-A/R/M processors Bare metal compiler for embedded ARM chips using Cortex-M, Cortex-R and Cortex-A processors. This package is based on the GNU ARM toolchain provided by ARM.
There, I don't see any previous version. I think they should be listed here, but I don't see it. I can't downgrade if I can't provide the exact previous version I want to downgrade to.
Using gcc-arm-embedded instead of gcc-arm-none-eabi
I followed the instructions given in the link above, which led me to these commands:
sudo apt remove gcc-arm-none-eabi sudo apt-add-repository ppa:team-gcc-arm-embedded/ppa sudo apt update
[...] Ign:4 http://ppa.launchpad.net/team-gcc-arm-embedded/ppa/ubuntu bionic InRelease
Get:5 http://security.ubuntu.com/ubuntu bionic-security InRelease [83.2 kB]
Err:6 http://ppa.launchpad.net/team-gcc-arm-embedded/ppa/ubuntu bionic Release
404 Not Found [IP: 188.8.131.52 80] Reading package lists... Done
E: The repository 'http://ppa.launchpad.net/team-gcc-arm-embedded/ppa/ubuntu bionic Release' does not have a Release file. N: Updating from such a repository can't be done securely, and is therefore disabled by default. N: See apt-secure(8) manpage for repository creation and user configuration details.
sudo apt-install gcc-arm-embedded
Reading package lists... Done Building dependency tree
Reading state information... Done E: Unable to locate package gcc-arm-embedded
Basically it seems I have issues accessing the PPA. I tried the
--allow-unauthenticated but it didn't change the commands output.
Is there a way to make one of those two solutions work, or is there another way to get a functional gcc toolchain on Ubuntu 18.04 to build hard-float application for Cortex-M4F CPU ?
(I've posted recently a SO question on this issue, at this time I thought it was a toolchain issue not so related with the Unix world. If I get an answer here I'll close it and redirect to this Q/A)