Errore C Linker: undefined reference to `main` (Entry Point Mancante)
Il linker ld o gcc non trova la definizione della funzione di punto di ingresso principale 'int main(void)' tra i file oggetto compilati o nella libreria specificata.
Categoria
Articoli tecnici organizzati per gruppo funzionale.
Il linker ld o gcc non trova la definizione della funzione di punto di ingresso principale 'int main(void)' tra i file oggetto compilati o nella libreria specificata.
L'inclusione di <omp.h> o l'uso di direttive '#pragma omp' richiede obbligatoriamente il flag '-fopenmp' sia in fase di compilazione che in fase di link con gcc/clang.
In sistemi Unix/Linux le funzioni matematiche di <math.h> risiedono in una libreria separata (libm.so) che deve essere esplicitamente indicata alla riga di comando del compilatore aggiungendo il flag '-lm' alla fine.
L'inclusione di <pthread.h> non è sufficiente per collegare la libreria di threading POSIX; è necessario passare il flag '-pthread' sia al compilatore che al linker.
Il codice compila correttamente la dichiarazione della funzione, ma in fase di link finale ld non trova il file oggetto .o o la libreria .a/.so che contiene il corpo effettivo della funzione.
Il linker è configurato per compilare un'applicazione grafica per Windows (/SUBSYSTEM:WINDOWS) che si aspetta la funzione 'WinMain', mentre il codice sorgente definisce la classica funzione 'main' di console (/SUBSYSTEM:CONSOLE).
I container della Standard Template Library non sono thread-safe per scritture concorrenti: due o più thread che leggono e modificano la stessa istanza senza mutex o atomici generano corruzione di memoria.
Un normale 'std::mutex' non tiene traccia dell'identità del thread proprietario; se una funzione acquisisce il lock e poi invoca una funzione interna che tenta di acquisire lo stesso mutex, si verifica un blocco permanente (deadlock).