Como instalar uma toolchain funcional de cross-gcc no Ubuntu 18.04?

2

Contexto

Instalei recentemente 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 em uma VM. Eu quero cross-compilar aplicativos para CPUs Cortex-M4F com hard floating points , portanto, instalei o pacote gcc-arm-none-eabi version 15:6.3.1+svn253039-1build1 , bem como libnewlib-arme-none-eabi na versão 2.4.0.20160527-3 .

Problema

Há um erro de linker devido a um conflito entre meus arquivos de objetos usando hard floats e as libs usando flutuantes suaves. Algumas pesquisas indicam que este é um problema conhecido do Ubuntu 18.04:

Observe que eu forneço os sinalizadores de compilador e linker corretos, e este projeto é compilado corretamente com o conjunto de ferramentas cruzadas do Windows de GNU ARM Embedded . Eu acho que seria inútil colar aqui o erro completo. Se alguém achar que seria necessário, ficaria feliz em editar essa pergunta.

O que eu já tentei

A partir do meu entendimento básico, tenho duas soluções para obter uma cadeia de ferramentas funcional ARC do gcc:

  1. Fazer downgrade de gcc-arm-none-eabi para retornar a uma versão de trabalho
  2. Remova gcc-arm-none-eabi e instale gcc-arm-embedded do PPA do time gcc da ARM ( Instalar o gcc-arm-embedded a partir do PPA )

Desclassificação do gcc-arm-none-eabi, mas para quê?

Para fazer o downgrade de gcc-arm-none-eabi , preciso encontrar uma versão anterior no meu gerenciador de pacotes. Primeiro atualizei a lista de pacotes com sudo apt update , depois digitei:

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.

Lá, não vejo nenhuma versão anterior. Eu acho que eles deveriam estar listados aqui, mas eu não vejo isso. Não posso fazer downgrade se não puder fornecer a versão anterior exata para a qual quero fazer o downgrade.

Usando o gcc-arm-embedded em vez do gcc-arm-none-eabi

Eu segui as instruções dadas no link acima, o que me levou a esses comandos:

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: 91.189.95.83 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

Basicamente, parece que tenho problemas para acessar o PPA. Eu tentei o apt switch --allow-unauthenticated mas ele não alterou a saída dos comandos.

Pergunta

Existe uma maneira de fazer uma dessas duas soluções funcionar, ou existe outra maneira de obter uma funcional toolchain do gcc no Ubuntu 18.04 para criar uma aplicação hard-float para a CPU Cortex-M4F?

(publiquei recentemente um SO pergunta sobre esta questão, neste momento eu pensei que era um problema de toolchain não tão relacionado com o mundo Unix. Se eu receber uma resposta aqui eu vou fechá-lo e redirecionar para este Q / A)

    
por Tim 02.07.2018 / 15:33

1 resposta

1

Você pode fazer o download de um conjunto de ferramentas funcional do developer.arm.com e instalá-lo manualmente após remover o pacote existente do gcc-arm-none-eabi.

Acesse o site, clique no botão "Download" e obtenha:  %código%. Salve no seu diretório pessoal.

Certifique-se de ter desinstalado os pacotes antigos do Ubuntu.

sudo apt remove binutils-arm-none-eabi gcc-arm-none-eabi libnewlib-arm-none-eabi

Descompacte o novo pacote no seu diretório pessoal:

tar -xjvf gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2

Adicione o novo conjunto de ferramentas ao seu caminho:

export PATH=$PATH:/home/(your user)/gcc-arm-none-eabi-7-2018-q2-update/bin/

Neste ponto, você deve ter um compilador ARM e uma toolchain. (Para os novatos do Unix: se você fechar o terminal e abrir um novo, terá que executar novamente a instrução gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2 para que o compilador seja pego novamente.)

    
por 06.11.2018 / 00:35