Domanda

Ragazzi, Ho un progetto che ho compilato per il processore ARM Cortex-A8. Sto facendo uso di GCC per fare questo. Attualmente le dimensioni del mio eseguibile è 220,1 KB. Ora modifico il mio makefile e aggiungo il -mthumb bandiera, gli sguardi di linea makefile un po 'come questo -

gcc -mcpu=cortex-a8 -mthumb -marm -mfloat-abi=softfp -mfpu=neon

Lo faccio cambiamenti in tutti i miei makefile e io costruisco il mio progetto, ma l'eseguibile ricevo finalmente continua ad essere di 220,1 KB.

ho fatto più un cambio alla mia linea di comando, ho aggiunto l'opzione -mthumb-Interwork

gcc -mcpu=cortex-a8 -mthumb -mthumb-interwork -marm -mfloat-abi=softfp -mfpu=neon

Ancora una volta ho la stessa dimensione eseguibile 220,1 KB. Mi manca nulla mentre si fa questo?

Ho scritto un piccolo programma, per trovare il più piccolo dei due numeri e ho compilato utilizzando la seguente riga di comando

gcc main.c -o main

ho un 8,5 KB eseguibile

Avanti, faccio un

gcc -mthumb main.c -o main

I ancora ottenere un 8,5 KB eseguibile.

Cosa c'è di sbagliato qui?

Ho fatto un cat /proc/cpuinfo per vedere se il pollice è davvero supportato da mio processore, e vedo che è davvero supportato. Ottengo -

Processor: ARMv7 Processor rev 5 (v7l)
Features: swp half thumb fastmult vfp edsp neon vfpv3
....
....
È stato utile?

Soluzione

Credo mezzi -marm avete un braccio senza il pollice, provare a rimuovere -marm.

Altri suggerimenti

E 'difficile da dire senza avere il codice vero e proprio, ma ho un paio di suggerimenti.

  1. Abilita ottimizzazioni. (Ad esempio -O3 -ffunction-sezioni -fdata sezioni)
  2. Striscia l'eseguibile per assicurarsi che le informazioni di debug non viene conteggiato.
  3. Controlla la dimensione del codice (.text) reale, non la dimensione del file. Forse c'è un po 'di imbottitura in corso. È possibile utilizzare objdump per questo.
  4. Dump il codice assembly (interruttore -S) e verificare che essa produce effettivamente istruzioni ARM in un caso e pollice in un altro.

Con alcuni compilatori, il pollice è l'impostazione predefinita quando si compila per ARMv7. Sei sicuro che il vostro eseguibile originale non è stato costruito per il pollice?

Prova edificio con -mno-pollice e vedere se l'aumento delle dimensioni del codice.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top