2012-06-12 11 views
10

Mi código c al compilar en gcc está dando el error Cannot find entry symbol _start defaulting to 00000. ¿Alguien puede decirme por qué y cómo corregirlo?No se puede encontrar el símbolo de entrada _start

La línea de comandos es arm-none-eabi-gcc -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -ftree-vectorize -mfloat-abi=softfp file path y la plataforma de destino es un procesador de corteza sitara-8.

+1

Necesita publicar más información. Especialmente su línea de comando y plataforma de destino. –

+0

la línea de comando es arm-none-eabi-gcc -O3 -march = armv7-a -mtune = cortex-a8 -mfpu = neon -ftree-vectorize -mfloat-abi = ruta del archivo softfp y la plataforma de destino es a-8 procesador de corteza sitara –

+2

'_start' es parte de la biblioteca estándar. Es la función que llama 'main'. Debe definirse en 'crt0.o', que se debe vincular automáticamente con su programa. Es posible que su gcc funcione de manera diferente y requiera algunas acciones adicionales. Tal vez hay algunos ejemplos de trabajo en la documentación? –

Respuesta

3

la -none- parte significa que su cadena de herramientas no se crea para un sistema operativo en particular, por lo que debe definir un punto de entrada _start. Para las cadenas de herramientas de metal no desnudo que se crean para un sistema operativo en particular, _start es provisto por la biblioteca estándar que, en orden, llamará a main cuando todo esté configurado.

5

La única razón por la que el compilador arrojó el error anterior se debe a que el código de inicio (_start function) generado por el sistema operativo para ejecutar su código no puede encontrar la función principal predeterminada o registrada. Entonces, puede usar la función _start en lugar de la función principal, pero el comando de compilación debe ser gcc -nostartfiles filename.c, pero usando _start hay muchas excepciones, por lo que es mejor usar main en su lugar.

Cuestiones relacionadas