GNU/Linux >> Tutoriales Linux >  >> Linux

crt1.o:En la función `_start':- referencia indefinida a `main' en Linux

Intenta agregar -nostartfiles a las opciones de su enlazador, es decir,

$(LINK) -nostartfiles -g ...

De la documentación de gcc:

-nostartfiles
    Do not use the standard system startup files when linking. The standard system libraries are used normally, unless -nostdlib or -nodefaultlibs is used. 

Esto provoca crt1.o no debe vincularse (normalmente está vinculado de forma predeterminada):normalmente solo se usa cuando implementa su propio _start código.


-shared la opción de enlace debe usarse cuando compila un .so


El problema para mí fue que, por error, puse int main() en un espacio de nombres. Asegúrate de no hacer eso, de lo contrario obtendrás este molesto error de enlace.

Espero que esto ayude a alguien :)


Linux
  1. Verifique el espacio en disco usado en Linux con du

  2. Los 7 espacios de nombres de Linux más utilizados

  3. Linux – ¿Uso de memoria real?

  4. ¿Dónde está la función itoa en Linux?

  5. Error de Linux c ++:referencia indefinida a 'dlopen'

Pruebe las aplicaciones de GNOME en esta plataforma de referencia de Linux

Comando de pantalla en Linux explicado

90 comandos de Linux utilizados con frecuencia por los administradores de sistemas de Linux

El comando dpkg en Linux:una referencia para principiantes

copy_to_user indefinido en Linux kernel versión 4.12.8

Enlace dinámico - Linux vs. ventanas