GNU/Linux >> LINUX-Kenntnisse >  >> Linux

crt1.o:In Funktion `_start':- undefinierter Verweis auf `main' unter Linux

Versuchen Sie, -nostartfiles hinzuzufügen zu Ihren Linker-Optionen, d.h.

$(LINK) -nostartfiles -g ...

Aus der gcc-Dokumentation:

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

Dies verursacht crt1.o nicht verlinkt werden (es ist normalerweise standardmäßig verlinkt) - wird normalerweise nur verwendet, wenn Sie Ihren eigenen _start implementieren Code.


-shared Link-Option muss verwendet werden, wenn Sie einen .so kompilieren


Das Problem für mich war, dass ich versehentlich int main() eingegeben habe in einem Namensraum. Stellen Sie sicher, dass Sie das nicht tun, sonst erhalten Sie diesen lästigen Link-Fehler.

Hoffe, das hilft jemandem :)


Linux
  1. Wo ist die Itoa-Funktion in Linux?

  2. Linux c++ Fehler:undefinierter Verweis auf „dlopen“

  3. finde -exec eine Shell-Funktion in Linux?

  4. Libusb undefinierter Verweis auf

  5. Warum wird select unter Linux verwendet

Testen Sie GNOME-Apps auf dieser Linux-Referenzplattform

Bildschirmbefehl unter Linux erklärt

90 Linux-Befehle, die häufig von Linux-Systemadministratoren verwendet werden

Der dpkg-Befehl in Linux – Eine Referenz für Anfänger

copy_to_user undefiniert in Linux-Kernel-Version 4.12.8

Dynamisches Linken - Linux vs. Fenster