TL/DR: ¿Dónde puedo encontrar más información sobre la construcción de una cadena de herramientas de compilación cruzada GCC 4.7.0 para la plataforma ARM (gnueabi) (destinada a ejecutarse en un dispositivo Raspberry Pi)?Compilación cruzada para Raspberry Pi en GCC. ¿Donde empezar?
Acabo de recibir una nueva Raspberry Pi y estoy ansioso por comenzar a programarla. Logré instalar la herramienta GCC (estoy usando la imagen del sistema Arch Linux) y compilé algunos programas básicos, todo funciona bien.
También intenté compilar las bibliotecas de Boost porque a menudo las uso en mis proyectos y todo parecía funcionar bien siguiendo las instrucciones (./bootstrap.sh
+ ./b2
) excepto por el hecho de que la compilación fue muy lenta. Lo dejé encendido por algunas horas pero apenas pasó los primeros pocos archivos fuente. Después de dejarlo funcionando durante la noche, descubrí que el proceso de compilación se había cancelado debido a la escasez de RAM.
Creo que Rasp Pi simplemente tiene poco poder para compilar algo de tamaño como Boost. Entonces, la compilación cruzada viene a mi mente. Sin embargo, a pesar de que hay mucha información sobre la compilación cruzada de ARM disponible en línea, la encuentro confusa. ¿Dónde incluso uno comienza?
Tengo una versión reciente de GCC (4.7.0) disponible en mi Raspberry Pi, por lo que me gustaría hacer una compilación cruzada con la misma versión. ¿Dónde puedo obtener la cadena de herramientas GCC 4.7.0 para ARM? (I compilaremos en x86 CentOS 6,2)
Editar:
que cancela la asignación de memoria de la GPU que no sean necesarios y crear una partición de intercambio de 4 GB en una unidad USB, mientras que construir archivos están en un recurso compartido de NFS. Boost ahora se está compilando mucho más rápido, por lo que es manejable. Sin embargo, me gustaría saber cómo puedo configurar un GCC 4.7 toolchain para compilación cruzada en mi PC x86, ya que tengo la intención de hacer mucha compilación y me gustaría que sea lo más rápido posible.
Edición 2:
Desde GCC 4.7.0 es relativamente nuevo, no parece haber un pre-construidos compilador cruzado (i386-> ARM). Probablemente tendré que construir uno yo mismo, lo que parece una tarea no trivial (lo he intentado y fallé). ¿Alguien sabe de un tutorial a seguir para construir un compilador cruzado de GCC, con suerte para una de las versiones recientes?
He intentado con this great shell script (que funcionó muy bien para compilar un compilador del mismo arco) y he creado binutils
y los requisitos previos de GCC, pero la compilación de GCC siguió fallando con muchos errores crípticos. Estoy realmente perdido aquí, por lo que agradecería mucho su ayuda.
GCC en Frambuesa Pi se ha configurado con
--prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib
--mandir=/usr/share/man --infodir=/usr/share/info
--with-bugurl=https://bugs.archlinux.org/
--enable-languages=c,c++,fortran,lto,objc,obj-c++ --enable-shared
--enable-threads=posix --with-system-zlib --enable-__cxa_atexit
--disable-libunwind-exceptions --enable-clocale=gnu
--disable-libstdcxx-pch --enable-libstdcxx-time
--enable-gnu-unique-object --enable-linker-build-id --with-ppl
--enable-cloog-backend=isl --enable-lto --enable-gold
--enable-ld=default --enable-plugin --with-plugin-ld=ld.gold
--with-linker-hash-style=gnu --disable-multilib --disable-libssp
--disable-build-with-cxx --disable-build-poststage1-with-cxx
--enable-checking=release --host=arm-unknown-linux-gnueabi
--build=arm-unknown-linux-gnueabi
Datos 3:
logré construir una cadena de herramientas 4.7 GCC para ARM (yay!) Usando this shell script según lo sugerido por dwelch usuario en el comentarios También construí newlib
y libstdc++
usando this article como guía. La herramienta funciona bien, pero cuando ejecuto el ejecutable en mi Raspberry Pi, falla con Illegal instruction
. ¿Cuál podría ser la causa de eso?
Pruebe el paquete zram si aún no está instalado. Esto creará un intercambio de RAM comprimido, que ayuda más de lo que piensas. (Extrañamente.) Agregue también un dispositivo USB decentemente rápido, ya sea un disco duro USD o un dispositivo USB de alta calidad, y cambie eso. –
Además, en este hilo puede leer cómo deshabilitar la memoria de gráficos para que gane 32 megas de RAM: http://www.raspberrypi.org/phpBB3/viewtopic.php?f=5&t=4831&p=65410 –
Wow, gracias . De hecho, tenía 128 MB asignados para GPU. No es de extrañar que todo fuera tan lento. – Tibor