proteus none for cross cortex compiler linux gcc arm

linux - for - install arm none eabi gdb



CompilaciĆ³n cruzada de Linux a ARM-ELF(ARM926EJ-S/MT7108) (2)

He instalado todos los paquetes de compilación cruzada en mi sistema ubuntu hasta el momento, pero estoy teniendo un problema y necesito ayuda.

Processor : ARM926EJ-S rev 5 (v5l) BogoMIPS : 184.72 Features : swp half thumb fastmult edsp java CPU implementer : 0x41 CPU architecture: 5TEJ CPU variant : 0x0 CPU part : 0x926 CPU revision : 5 Cache type : write-back Cache clean : cp15 c7 ops Cache lockdown : format C Cache format : Harvard I size : 32768 I assoc : 4 I line length : 32 I sets : 256 D size : 32768 D assoc : 4 D line length : 32 D sets : 256 Hardware : MT7108 Revision : 0000 Serial : 0000000000000000

Esta es la máquina de destino para la que necesito cruzar la compilación. ¿Qué banderas debo usar al compilar?


Usted tiene un ARMv5 sin procesador de coma flotante. Debería haber sido suficiente con -march=armv5 y -mfloat-abi=soft banderas -mfloat-abi=soft .

Sin embargo, si esos indicadores no funcionan para usted, sugeriría escribir la aplicación c más pequeña para probar la cadena de herramientas.

/* no includes */ int main(void) { return 42; }

y compilarlo con las banderas más completas / estrictas

$arm-linux-gnueabi-gcc -Wall --static -O2 -marm -march=armv5 simple.c -o simple

después de esto, presione simple para apuntar, ejecútelo y luego emita un echo $? para verificar si obtendrías 42 . Si funciona, intenta ver si puedes printf . Si ese también funciona, estás preparado para todo. Si printf falla, la solución más fácil sería encontrar la cadena de herramientas correcta para su objetivo.


apt-cache search arm | grep ^gcc- apt-cache search arm | grep ^gcc- da la siguiente lista,

  1. gcc-4.7-aarch64-linux-gnu - compilador GNU C
  2. gcc-4.7-arm-linux-gnueabi - compilador GNU C
  3. gcc-4.7-arm-linux-gnueabi-base - GCC, la colección de compiladores de GNU (paquete básico)
  4. gcc-4.7-arm-linux-gnueabihf - compilador GNU C
  5. gcc-4.7-arm-linux-gnueabihf-base - GCC, la colección de compiladores de GNU (paquete básico)
  6. gcc-4.7-multilib-arm-linux-gnueabi - compilador GNU C (archivos multilib)
  7. gcc-4.7-multilib-arm-linux-gnueabihf - compilador GNU C (archivos multilib)
  8. gcc-aarch64-linux-gnu - El compilador GNU C para la arquitectura arm64
  9. gcc-arm-linux-gnueabi - El compilador GNU C para arquitectura armel
  10. gcc-arm-linux-gnueabihf - El compilador GNU C para la arquitectura armhf

Debe instalar gcc-arm-linux-gnueabi, que es un alias para gcc-4.7-arm-linux-gnueabi . gcc-4.7-multilib-arm-linux-gnueabi también es posible, pero más complicado. Utilice las banderas, -march=armv5te -mtune=arm926ej-s -msoft-float -mfloat-abi=soft . Puede hacer más ajustes especificando la --param NAME=VALUE en gcc con los parámetros sintonizados a la temporización del subsistema de memoria de su sistema .

Es posible que no pueda usar estas versiones de gcc , ya que su Linux puede compilarse con OABI y / o ser bastante antiguo en comparación con aquel para el que se compiló el compilador. En algunos casos, la libc llamará a una API de Linux más nueva, que puede no estar presente. Si el compilador / libc no se configuró para ser compatible con versiones anteriores, es posible que no funcione con su sistema. Puede usar crosstool-ng para crear un compilador personalizado que se adapte a su sistema, pero esto es mucho más complejo.