O kernel de compilação cruzada não pode encontrar o gcc

1

Estou compilando o kernel Raspbian, já que levará cerca de 12 horas para o Pi fazer (Raspberry Pi 1).

Eu tenho as ferramentas de compilação para o ARM e o kernel em duas pastas separadas em / home / gray / Desktop / tmp /

Estou seguindo este guia: link

Meu problema é que quando eu vou compilar, ele não pode encontrar o arm-linux-gnueabihf-gcc-4.8.3 que está claramente na pasta que eu fiz quando exportei o CCPREFIX. Aqui está o que eu fiz:

gray@Rava-Xubuntu:~/Desktop/tmp/linux$ export CCPREFIX=/home/gray/Desktop/tmp/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-

E ele retorna quando tento criar:

gray@Rava-Xubuntu:~/Desktop/tmp/linux$ make ARCH=arm CROSS_COMPILE=${CCPREFIX}
/home/gray/Desktop/tmp/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc: 1: /home/gray/Desktop/tmp/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc: arm-linux-gnueabihf-gcc-4.8.3: not found
  CHK     include/config/kernel.release
  CHK     include/generated/uapi/linux/version.h
  CHK     include/generated/utsrelease.h
make[1]: 'include/generated/mach-types.h' is up to date.
  CC      kernel/bounds.s
/home/gray/Desktop/tmp/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc: 1: /home/gray/Desktop/tmp/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc: arm-linux-gnueabihf-gcc-4.8.3: not found
Kbuild:43: recipe for target 'kernel/bounds.s' failed
make[1]: *** [kernel/bounds.s] Error 127
Makefile:990: recipe for target 'prepare0' failed
make: *** [prepare0] Error 2

Mesmo que o arquivo esteja claramente lá:

Obrigado.

    
por Gray 02.12.2015 / 02:17

2 respostas

0

Eu não consegui descobrir onde arm-linux-gnueabihf-gcc-4.8.3 está falhando em seu link fornecido, mas sua variável de ambiente PATH contém caracteres estranhos:

PATH=/home/gray/Desktop/tmp/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-ras204203pbian/bin:/home/gray/bin:/usr/local/sbin:/usr/local/bin:/usr/sbi" ...

Aqueles 204203 em raspbian part não devem estar lá.

Verifique novamente seus scripts e defina o PATH adequadamente.

Seu CROSS_COMPILE, no entanto, parece estar intacto. Provavelmente o gcc tenta executar coisas do PATH ou você tem um toolchain quebrado / link simbólico em algum lugar.

Use este strace para depurar profundamente:

strace -f -v -s150 -o log -eexecve,stat,stat64 (make command) e, em seguida, fgrep ENOENT log . Em seguida, filtre itens não existentes do seu PATH e tente localizar e corrigir os itens restantes para que fiquem no lugar.

    
por 02.12.2015 / 10:11
0

Então eu percebi isso.

Acabei de pegar a versão crossbuild do gcc (acho que é o que é)

sudo apt-get install crossbuild-essential-armhf

E então meu novo caminho é:

export CCPREFIX=/usr/bin/arm-linux-gnueabihf-

E a construção funciona perfeitamente!

    
por 02.12.2015 / 19:08