Problema na compilação cruzada do TinyCC com CodeSourcery

2

Estou tentando cruzar a compilação homas da versão do TinyCC do Preud'homme usando o seguinte comando

./configure --cc=arm-none-linux-gnueabi-gcc --prefix=/home/shushant/tinycc/tc

e mostra a seguinte mensagem de erro depois de executar make install

make: Circular Makefile <- Makefile dependency dropped.
make -C lib native
make[1]: Entering directory '/home/shushant/tinycc/lib' arm-none-linux-gnueabi-gcc -c alloca86_64.S -o x86_64/alloca86_64.o -I..  -Wall -g -O2 -fno-strict-aliasing -Wno-pointer-sign -Wno-sign-compare -Wno-unused-result -DTCC_TARGET_X86_64
alloca86_64.S: Assembler messages:
alloca86_64.S:7: Error: expression too complex -- 'pop %rdx'
alloca86_64.S:11: Error: ARM register expected -- 'mov %rdi,%rax'
alloca86_64.S:13: Error: ARM register expected -- 'add $15,%rax'
alloca86_64.S:14: Error: ARM register expected -- 'and $-16,%rax'
alloca86_64.S:15: Error: bad instruction 'jz p3'
alloca86_64.S:28: Error: ARM register expected -- 'sub %rax,%rsp'
alloca86_64.S:29: Error: ARM register expected -- 'mov %rsp,%rax'
alloca86_64.S:35: Error: expression too complex -- 'push %rdx'
alloca86_64.S:36: Error: bad instruction 'ret'
alloca86_64.S:40: Error: junk at end of line, first unrecognized character is ','
make[1]: *** [x86_64/alloca86_64.o] Error 1
make[1]: Leaving directory '/home/shushant/tinycc/lib'
make: *** [libtcc1.a] Error 2

alguma forma como os binários são gerados com sucesso, mas no diretório errado (na raiz de /home/shushant/tinycc ) em vez de /home/shushant/tinycc/tc e quando eu estou tentando rodar no emulador android seu show file not found dos binários gerados no curso não é suportado por dispositivo. Como posso consertar isso?

    
por Shushant 19.11.2013 / 09:27

1 resposta

3

A mensagem de erro mostra que você deseja compilar o código para sua plataforma (x86 / 64) com o compilador ARM que não funciona. O script de configuração não adivinhou o destino correto ("TCC_TARGET_X86_64" em vez do destino ARM).

Provavelmente, você precisa da opção --cpu=armv7a (ou exatamente o que você tem) e / ou a opção --cross-prefix=arm-none-linux-gnueabi- . Antes, execute make clean .

    
por 19.11.2013 / 10:47