Eu estou tentando construir um gcc
4.6 que "simplesmente funciona" em um Synology DS214 com DSM 5.1 (o Synology OS que efetivamente é um horrivelmente desatualizado Linux 3.2.x), ou seja, me permite compilar aplicativos no caixa. Estou tendo o mesmo problema a seguir com um gcc compilado com
env CC=/usr/local/arm-marvell-linux-gnueabi/bin/arm-marvell-linux-gnueabi-gcc \
LD=/usr/local/arm-marvell-linux-gnueabi/bin/arm-marvell-linux-gnueabi-ld \
RANLIB=/usr/local/arm-marvell-linux-gnueabi/bin/arm-marvell-linux-gnueabi-ranlib \
AR=/usr/local/arm-marvell-linux-gnueabi/bin/arm-marvell-linux-gnueabi-ar \
CFLAGS=" -I/usr/local/arm-marvell-linux-gnueabi/arm-marvell-linux-gnueabi/libc/include -mhard-float -mfpu=vfpv3-d16" \
LDFLAGS=" -L/usr/local/arm-marvell-linux-gnueabi/arm-marvell-linux-gnueabi/libc/lib" \
auto-apt run ./configure --host=arm-marvell-linux --target=arm-marvell-linux \
--prefix=$USER/syno-prefix --disable-shared --enable-obsolete
make
make install
com o Synology toolchain no Ubuntu 14.10 amd64 e os parâmetros recomendados para armadaxp
CPU e um conjunto de ferramentas crosstools-ng
( site do projeto ) com eglibc
2.18, gcc
4.6.4, linux 3.2.40
e architecture-level
s armv7-a
e armadaxp
(o último não funciona, erro "Arco desconhecido") e ajuste da CPU para cortex-a9
e CFLAGS
-mhard-float -mfpu=vfpv3-d16"
porque depois de horas pesquisando a única dica sobre parâmetros de arquitetura necessários foi um guia sobre como compilar a transmissão em um dispositivo MyCloud com armv7l .
Tanto o gcc
quanto o conjunto de ferramentas causam erros
/usr/local/bin/ld: unrecognised emulation mode: armelf_linux_eabi
Supported emulations: armelf_linux armelf armelfb armelfb_linux
collect2: ld returned 1 exit status
(em config.log
) ao compilar, e. binutils
2.24 e trafficserver
5.1.0 (adicionando LDFLAGS=" -marmelf_linux"
antes que o configure cause cc1: error: unrecognized command line option '-marmelf_linux'
). O erro parece ser sistemático. Como alguém poderia começar a descobrir os parâmetros específicos de hardware para os parâmetros de toolchain em geral e, em especial, para o dispositivo denotado?
Algumas informações sobre o alvo em que gcc
deve ser executado:
# cat /proc/cpuinfo
Processor : Marvell PJ4Bv7 Processor rev 2 (v7l)
processor : 0
BogoMIPS : 1064.96
processor : 1
BogoMIPS : 1064.96
Features : swp half thumb fastmult vfp edsp vfpv3 tls
CPU implementer : 0x56
CPU architecture: 7
CPU variant : 0x2
CPU part : 0x584
CPU revision : 2
Hardware : Marvell Armada XP Development Board
Revision : 0000
Serial : 0000000000000000
Eu tentei começar a ler sobre ARM e unidades de ponto flutuante (principalmente na Wikipédia), mas para adivinhar quais parâmetros são necessários é preciso muito para um iniciante.
EDIT 1: Acabei de descobrir que seria bom definir a opção Toolchain type
como Canadian
em vez de Cross
, mas ainda assim eu preciso de crosstools-ng
co_de % de opção a ser definida (falha com erro machine
) o que me traz de volta ao meu problema de falta de conhecimento sobre detalhes de CPU e arquitetura - e, claro, não há como descobrir o que "máquina" realmente se refere ... / p>