GNU/Linux >> Linux Esercitazione >  >> Linux

crt1.o:Nella funzione `_start':- riferimento non definito a `main' in Linux

Prova ad aggiungere -nostartfiles alle opzioni del tuo linker, ad es.

$(LINK) -nostartfiles -g ...

Dalla documentazione di 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. 

Questo causa crt1.o non essere collegato (normalmente è collegato per impostazione predefinita) - normalmente utilizzato solo quando si implementa il proprio _start codice.


-shared l'opzione link deve essere usata quando compili un .so


Il problema per me era che per errore ho inserito int main() in uno spazio dei nomi. Assicurati di non farlo altrimenti otterrai questo fastidioso errore di collegamento.

Spero che questo aiuti qualcuno :)


Linux
  1. Dov'è la funzione itoa in Linux?

  2. Errore Linux c++:riferimento non definito a 'dlopen'

  3. trovare -exec una funzione di shell in Linux?

  4. Libusb riferimento indefinito a

  5. Perché select è usato in Linux

Testa le app GNOME su questa piattaforma di riferimento Linux

Spiegazione del comando dello schermo su Linux

Linux:reale utilizzo della memoria?

90 comandi Linux usati frequentemente dagli amministratori di sistema Linux

Il comando dpkg in Linux:un riferimento per principianti

Troncare un file mentre è in uso (Linux)