es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Compilación cruzada con gcc-linaro-4.9-2016.02-x86_64_arm-linux-gnueabihf en un Host con LFS/ inodes en 64 bits.

Resumen:
Hemos trasladado nuestra cadena de herramientas de compilación cruzada para una placa ARM de un sistema de archivos de 32 bits a un host de 64 bits cuyo sistema de archivos tiene inodos > 2^32. El uso de gcc-linaro-4.9-2016.02-x86_64_arm-linux-gnueabihf resulta en el error

cc1plus: error: MYPATH: Valor demasiado grande para el tipo de dato definido

donde


$ stat MYPATH
...
Inodo 9264879623
...

Esta cadena de herramientas se compila para un host de 64 bits, ¿por qué no puede manejar inodos de 64 bits?

Explicación detallada:
Utilizamos gcc-linaro-arm-linux-gnueabihf-4.8-2014.04 en nuestro host de 32 bits. Inicialmente, después de trasladarnos a un host de 64 bits, establecimos enable_ino64=0 y continuamos con la antigua cadena de herramientas. Sin embargo, esto solo tiene efecto en una única máquina y eventualmente queremos que la cadena de herramientas funcione en todas las máquinas de la empresa.

Podemos compilar el código correctamente con gcc-linaro-4.9-2016.02-x86_64_arm-linux-gnueabihf cuando todos los archivos de origen (casualmente) residen en el servidor de archivos con inodos <= 32 bits.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema está relacionado con el hecho de que la cadena de herramientas gcc-linaro-4.9-2016.02-x86_64_arm-linux-gnueabihf no fue compilada con soporte para inodos de 64 bits, a pesar de haber sido compilada para un host de 64 bits. Para resolver este problema, la cadena de herramientas debería ser recompilada con soporte para inodos de 64 bits. Como alternativa, podrías seguir utilizando la antigua cadena de herramientas con enable_ino64=0, pero esta solución no será escalable para todas las máquinas de la empresa.

Comments are closed.