Gerar toolchain cruzado agnóstico de localização

1

Eu construí um compilador cruzado para um ARM Cortex-A8 usando crosstool-ng, mas estou tendo alguns problemas ao tentar compilar até mesmo o mais simples dos programas.

Tentando compilar test.h :

$ arm-linux-gnueabihf-gcc -o prog test.c
test.c:1:20: fatal error: stdlib.h: No such file or directory
 #include <stdlib.h>
                    ^
compilation terminated.

Gerei o conjunto de ferramentas em um diretório específico e o copiei para outra pasta no diretório pessoal. Esse conjunto de ferramentas deve ser usado por outras pessoas para desenvolver um aplicativo, então o movi para um caminho mais "sensato".

Depois, tentei compilar o mesmo código usando o conjunto de ferramentas diretamente do caminho que foi originalmente gerado e funciona. Eu suspeitava que isso tivesse algo a ver com o caminho para o sysroot do alvo, mas depois de verificar com --print-sysroot , parece que ambos os caminhos são consistentes com a localização atual dos binários de toolchain. (Nota: eu adicionei o caminho para o toolchain copiado para o meu $PATH , antes de qualquer outro diretório)

$ /home/guilherme/Toolchain/bin/arm-linux-gnueabihf-gcc --print-sysroot # Copy
/home/guilherme/Toolchain/bin/../arm-cortex_a8-linux-gnueabihf/sysroot

$ /home/guilherme/Development/toolchain/tools/arm-cortex_a8-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc --print-sysroot # Original
/home/guilherme/Development/toolchain/tools/arm-cortex_a8-linux-gnueabihf/arm-cortex_a8-linux-gnueabihf/sysroot

Qualquer ajuda com este problema? Existe alguma opção no ct-gn que me permita criar um toolchain que possa ser movido / copiado para outras pastas / máquinas?

    
por Guilherme Costa 07.11.2016 / 18:59

1 resposta

0

Descobriu o problema.

Eu estava usando make headers_install ARCH=arm HDR_INSTALL_PATH=${TOOLCHAIN_SYSROOT}/usr para atualizar os cabeçalhos de toochain. No entanto, isso copia alguns (não todos) cabeçalhos de ${KERNEL_PATH}/include/linux para ${TOOLCHAIN_SYSROOT}/usr 'sanitizing' quaisquer cabeçalhos além daqueles copiados, excluindo, assim, stdio.h, math.he outros cabeçalhos "sem importância".

    
por 10.11.2016 / 20:15