CLFS para neon ARMv7

2

Estou seguindo o livro do CLFS (versão GIT-20140613-arm) , e tenho um problema ao construir GCC com combinação armv7 e neon. Informações sobre o alvo aqui .

Meu host é um Debian limpo com pacotes gawk, build-essential, texinfo e libncurses5-dev. Mais detalhes podem ser encontrados aqui .

Eu fiz este patch para construir o binutils com o gcc-4.9.

Seguindo as instruções, quando se trata de compilar o GCC pela primeira vez, ele afirma que não é possível combinar esses braços.

checking for suffix of object files... configure: error: in '/mnt/clfs/sources/gcc-build/arm-linux-musleabihf/libgcc':
configure: error: cannot compute suffix of object files: cannot compile
See 'config.log' for more details.

Em config.log , podemos ver:

conftest.c:1:0: error: target CPU does not support ARM mode

Vinculei o erro completo aqui .

Na minha pesquisa, encontrei esta pergunta que parece ser a mesma , mas o OP estava seguindo uma versão muito antiga do livro do CLFS, eu consegui superar esse bug adicionando --with-mode=thumb a ./configure , mas depois musl falha:

arm-linux-musleabihf-gcc -std=c99 -nostdinc -ffreestanding -fexcess-precision=standard -frounding-math -D_XOPEN_SOURCE=700 -I./arch/arm -I./src/internal -I./include -Os -pipe -fomit-frame-pointer -fno-unwind-tables -fno-asynchronous-unwind-tables -Wa,--noexecstack -Werror=implicit-function-declaration -Werror=implicit-int -Werror=pointer-sign -Werror=pointer-arith -fno-stack-protector -c -o crt/crt1.o crt/arm/crt1.s
crt/arm/crt1.s: Assembler messages:
crt/arm/crt1.s:6: Error: only lo regs allowed with immediate -- 'mov fp,#0'
crt/arm/crt1.s:7: Error: only lo regs allowed with immediate -- 'mov lr,#0'
crt/arm/crt1.s:8: Error: Thumb does not support this addressing mode -- 'ldr a2,[sp],#4'
crt/arm/crt1.s:11: Error: lo register required -- 'str fp,[sp,#-4]!'
crt/arm/crt1.s:12: Error: Thumb does not support this addressing mode -- 'str a1,[sp,#-4]!'
crt/arm/crt1.s:13: Error: Thumb does not support this addressing mode -- 'str a4,[sp,#-4]!'
Makefile:112: recipe for target 'crt/crt1.o' failed
make: *** [crt/crt1.o] Error 1

Eu também tenho tentei vfp e vfpv3 combinações , e eu também tentaram usar o Linaro GCC em vez de GNU um , sem sorte alguma.

Uma vez eu fiz este livro com sucesso até o final para Raspberry Pi One (hard, vfp e armv6), mas estou com problemas com a combinação Beaglebone.

O que estou perdendo? Meu ambiente está correto? Em caso afirmativo, o que eu poderia fazer para superar esse problema?

    
por Tiago Pimenta 29.09.2015 / 18:54

1 resposta

0

Para BeagleBone Black, as configurações de ambiente corretas são armv7-a , como podemos ver aqui e aqui , e precisamos pegar as configurações do kernel de aqui com bb.org_defconfig , e use cabeçalhos de aqui e correções para gcc de here , e lembre-se de criar o% finalgcc com --disable-libsanitizer .

Eu usei o seguinte comando antes de criar musl :

sed -i 's/\/dev\/null\/utmp/\/var\/run\/utmp/g;s/\/dev\/null\/wtmp/\/var\/log\/wtmp/g' include/paths.h include/utmp.h

E o seguinte antes de criar busybox para resolver wtmp issues:

sed -i 's/\(CONFIG_\)\(.*\)\(INETD\)\(.*\)=y/#  is not set/g;s/\(CONFIG_IFPLUGD\|CONFIG_ASH_HELP\|CONFIG_FEATURE_VERBOSE\|CONFIG_UEVENT\)=y/#  is not set/' .config
sed -i '/utmpx\.h/,/endif/s/__UCLIBC__/LIBBB_H/' include/libbb.h

Lista completa de pacotes:

wget -cO bootscripts-embedded-HEAD.tar.gz -c 'http://git.clfs.org/?p=bootscripts-embedded.git;a=snapshot;h=HEAD;sf=tgz'
wget -cO gcc-5.2.0-musl-1.patch 'https://raw.githubusercontent.com/GregorR/musl-cross/master/patches/gcc-5.2.0-musl.diff'
wget -c \
    'http://ftp.gnu.org/gnu/binutils/binutils-2.25.1.tar.bz2' \
    'http://busybox.net/downloads/busybox-1.24.0.tar.bz2' \
    'ftp://gcc.gnu.org/pub/gcc/releases/gcc-5.2.0/gcc-5.2.0.tar.bz2' \
    'http://ftp.gnu.org/gnu/gmp/gmp-5.1.3.tar.xz' \
    'http://sethwklein.net/iana-etc-2.30.tar.bz2' \
    'http://ftp.barfooze.de/pub/sabotage/tarballs/kernel-headers-3.12.6-5.tar.xz' \
    'https://github.com/beagleboard/linux/archive/4.1.tar.gz' \
    'ftp://ftp.denx.de/pub/u-boot/u-boot-2015.10.tar.bz2' \
    'ftp://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz' \
    'ftp://ftp.gnu.org/gnu/mpfr/mpfr-3.1.3.tar.xz' \
    'http://www.musl-libc.org/releases/musl-1.1.9.tar.gz' \
    'https://matt.ucc.asn.au/dropbear/releases/dropbear-2015.68.tar.bz2' \
    'http://www.red-bean.com/~bos/netplug/netplug-1.2.9.2.tar.bz2' \
    'http://downloads.sourceforge.net/libpng/zlib-1.2.9.tar.gz' \
    'http://patches.clfs.org/embedded-dev/iana-etc-2.30-update-2.patch' \
    'http://patches.clfs.org/embedded-dev/netplug-1.2.9.2-fixes-1.patch' \
    'http://downloads.sourceforge.net/libpng/zlib-1.2.8.tar.gz'

Isso resolve todos os problemas.

    
por 21.10.2015 / 02:25