Como construir um complemento cruzado do AVR no Gentoo Linux?

1

Eu preciso instalar o compilador AVR no meu PC. Algum tempo atrás eu usei crossdev -S avr para construir um, mas não funciona mais. Eu obtenho seguinte:

Calculating dependencies   * Missing digest for '/var/lib/layman/calculate/cross-avr/binutils/binutils-9999.ebuild'
 * Missing digest for '/var/lib/layman/calculate/cross-avr/binutils/binutils-2.23.51.0.9.ebuild'
 * Missing digest for '/var/lib/layman/calculate/cross-avr/binutils/binutils-2.23.51.0.8.ebuild'
 * Missing digest for '/var/lib/layman/calculate/cross-avr/binutils/binutils-2.23.51.0.7.ebuild'
 * Missing digest for '/var/lib/layman/calculate/cross-avr/binutils/binutils-2.23.51.0.6.ebuild'
 * Missing digest for '/var/lib/layman/calculate/cross-avr/binutils/binutils-2.23.51.0.5.ebuild'
 * Missing digest for '/var/lib/layman/calculate/cross-avr/binutils/binutils-2.23.51.0.3.ebuild'
 * Missing digest for '/var/lib/layman/calculate/cross-avr/binutils/binutils-2.23.51.0.2.ebuild'
 * Missing digest for '/var/lib/layman/calculate/cross-avr/binutils/binutils-2.23.51.0.1.ebuild'
 * Missing digest for '/var/lib/layman/calculate/cross-avr/binutils/binutils-2.23.1.ebuild'
 * Missing digest for '/var/lib/layman/calculate/cross-avr/binutils/binutils-2.23.ebuild'
 * Missing digest for '/var/lib/layman/calculate/cross-avr/binutils/binutils-2.22.90.ebuild'
 * Missing digest for '/var/lib/layman/calculate/cross-avr/binutils/binutils-2.22.52.0.4.ebuild'
 * Missing digest for '/var/lib/layman/calculate/cross-avr/binutils/binutils-2.22-r1.ebuild'
 * Missing digest for '/var/lib/layman/calculate/cross-avr/binutils/binutils-2.21.1-r1.ebuild'
 * Missing digest for '/var/lib/layman/calculate/cross-avr/binutils/binutils-2.20.1-r1.ebuild'
 * Missing digest for '/var/lib/layman/calculate/cross-avr/binutils/binutils-2.19.1-r1.ebuild'
... done!

!!! All ebuilds that could satisfy "cross-avr/binutils" have been masked.
!!! One of the following masked packages is required to complete your request:
- cross-avr/binutils-9999::calculate (masked by: corruption)
- cross-avr/binutils-2.23.51.0.9::calculate (masked by: corruption)
- cross-avr/binutils-2.23.51.0.8::calculate (masked by: corruption)
- cross-avr/binutils-2.23.51.0.7::calculate (masked by: corruption)
- cross-avr/binutils-2.23.51.0.6::calculate (masked by: corruption)
- cross-avr/binutils-2.23.51.0.5::calculate (masked by: corruption)
- cross-avr/binutils-2.23.51.0.3::calculate (masked by: corruption)
- cross-avr/binutils-2.23.51.0.2::calculate (masked by: corruption)
- cross-avr/binutils-2.23.51.0.1::calculate (masked by: corruption)
- cross-avr/binutils-2.23.1::calculate (masked by: corruption)
- cross-avr/binutils-2.23::calculate (masked by: corruption)
- cross-avr/binutils-2.22.90::calculate (masked by: corruption)
- cross-avr/binutils-2.22.52.0.4::calculate (masked by: corruption)
- cross-avr/binutils-2.22-r1::calculate (masked by: corruption)
- cross-avr/binutils-2.21.1-r1::calculate (masked by: corruption)
- cross-avr/binutils-2.20.1-r1::calculate (masked by: corruption)
- cross-avr/binutils-2.19.1-r1::calculate (masked by: corruption)

Como todos os pacotes são mascarados por corrupção, não é possível desmascará-los de maneira comum; enquanto a geração manual de manifestos é considerada uma prática ruim.

    
por Ilia Nedoluzhko 19.02.2013 / 04:23

4 respostas

1

Não sei se você conseguiu corrigir seu problema, mas está aqui para quem está enfrentando o mesmo problema; a partir de 2 de setembro de 2015 (data de portage no meu ambiente crossdev ) o problema não ocorre se você executar o seguinte comando:

USE="-openmp -sanitize" crossdev -t avr -s4 -S --without-headers

O último é um trecho de Wiki do Gentoo Arduino . Apenas certifique-se de editar /usr/avr/etc/portage/make.conf e definir ACCEPT_KEYWORDS="avr" (notei que " ~ ARCH " está sempre incluído, mesmo que você tenha selecionado o ramo estável).

EDIT : Não há mais sobreposição necessária para a cadeia de ferramentas do AVR atualmente.

EDIT : Pode ser necessário adicionar um link simbólico ao diretório ldscripts do AVR:

ln -s /usr/lib64/binutils/avr/2.24/ldscripts /usr/avr/lib/

caso contrário gcc pode desistir com esta mensagem de erro:

/usr/libexec/gcc/avr/ld: cannot open linker script file ldscripts/avr4.xn: No such file or directory

Esse erro é mencionado no final do wiki, mas eu usei uma pequena variação do link simbólico, como aponta para /usr/lib64/binutils/avr/2.24/ldscripts de qualquer maneira.

Depois de adicionar esse link simbólico, eu poderia compilar um código de exemplo para o ATmega8L sem erros.

    
por 13.04.2016 / 18:50
3

Uma razão pela qual você pode estar recebendo o erro "missing digest" (a partir de 2016 no Gentoo, não sei se isso era verdade em 2013) é que você está usando a árvore portage do git (assim, com manifestos finos) que não contêm digests para os próprios ebuilds), enquanto o overlay usado para crossdev não permite isso. Se for esse o caso, adicionar thin-manifests = true a $overlay/metadata/layout.conf deve ser suficiente para corrigir o problema.

    
por 01.09.2016 / 11:22
1

Este é o link que você está procurando (em uma voz Obi-Wan-Kinobe): link

    
por 19.02.2013 / 04:27
0

Esta é a mensagem importante:

!!! All ebuilds that could satisfy "cross-avr/binutils" have been masked.

Você pode desmascarar um dos pacotes cross-avr/binutils , mas todos eles estão marcados como algo corrompedor. Basicamente, isso significa que quando você compila o pacote, ele não funcionará de qualquer maneira. Não tenho certeza de que maneira as coisas ficam corrompidas. Como desmascarar pacotes no Gentoo é muito bem explicado nos manuais do Gentoo, e de outra forma a ajuda pode ser encontrada no link Tem sido muito longo para mim para lembrar do topo da minha mente.

    
por 19.02.2013 / 09:33