¿Cómo puedo cambiar el punto de entrada “principal” de mi progtwig?
#include int main(int argc, char *argv[]) { printf("%s\n","Hello world!"); return 0; }
gcc -o entry_test -Wl,-eother entry_test.c
#include int other(void){//can't use argc, argv printf("Bye-Bye world!\n"); return 0; } int main(int argc, char *argv[]){ printf("%s\n","Hello world!"); return 0; }
Si estás usando gcc, encontré un hilo que decía que puedes usar el parámetro de línea de comandos -e para especificar un punto de entrada diferente; como BLUEPIXY declaró ver también:
Evitar el principal (punto de entrada) en un progtwig en C
-Ver el siguiente enlace para más detalles sobre la opción “-e”:
http://gcc.gnu.org/ml/gcc/2001-06/msg01959.html
Otra forma es cambiar la función de inicio en el archivo de “inicio” del vinculador. El vinculador puede incluir un código de inicio principal en un archivo como start.o y es este fragmento de código el que se ejecuta para configurar el entorno C luego llame a main (como en todas las cadenas de herramientas integradas). No hay nada que le impida reemplazar eso con algo que llame a otra función.
Aquí hay una excelente explicación para los archivos de inicio:
¿Qué es el gestor de arranque y el código de inicio en los sistemas integrados?
Voté esta pregunta porque podría ser útil para algunos desarrolladores de c incrustados.