Estoy tratando de compilar y ejecutar el siguiente programa sin main()
función en C
. He compilado mi programa usando el siguiente comando.
gcc -nostartfiles nomain.c
Y el compilador da una advertencia
/usr/bin/ld: warning: cannot find entry symbol _start; defaulting to 0000000000400340
Está bien, no hay problema. luego, he ejecutado el archivo ejecutable (a.out), ambas printf
declaraciones se imprimen correctamente y luego obtengo una falla de segmentación .
Entonces, mi pregunta es, ¿Por qué falla la segmentación después de ejecutar con éxito declaraciones de impresión?
mi código:
#include <stdio.h>
void nomain()
{
printf("Hello World...\n");
printf("Successfully run without main...\n");
}
salida:
Hello World...
Successfully run without main...
Segmentation fault (core dumped)
Nota:
Aquí, el -nostartfiles
indicador gcc evita que el compilador use archivos de inicio estándar al vincular