Linker ed Oggetti ld
/usr/bin/ld: file.o: undefined reference to `my_function` – C UNDEF_REF_SYMBOL
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.
Cosa significa questo errore?
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.
Messaggio originale
/usr/bin/ld: file.o: undefined reference to `my_function`Contesto e parole chiave
Alias
- undefined reference to symbol ld C
Messaggi alternativi
- simbolo o funzione indefinita nel link
Prodotti
- GCC / Clang / MSVC / GDB
Piattaforme
- Linux
- macOS
- Windows
Parole chiave
- c.linker.undefined-reference-to-symbol
- errore-c-undefined-reference-to-symbol
- linguaggio-c
- Linker ed Oggetti ld
Cause possibili
Causa tecnica per Errore C Linker: undefined reference to `symbol` (Simbolo Non Definito nel Link)
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.
molto comuneDiagnosi
Diagnostica di compilazione o memoria per Errore C Linker: undefined reference to `symbol` (Simbolo Non Definito nel Link)
Compilare con flag di warning rigorosi (-Wall -Wextra -pedantic) e analizzare eventuali crash con AddressSanitizer o GDB.
Come leggere il risultato. Evidenzia warning precisi a tempo di compilazione ed esegue l'intercettazione dei memory error a runtime.
gcc -Wall -Wextra -pedantic -fsanitize=address -g main.c -o appRisoluzione
Risoluzione standard per Errore C Linker: undefined reference to `symbol` (Simbolo Non Definito nel Link)
Applicare la correzione al codice sorgente C secondo le buone pratiche di gestione memoria e prototipi.
- Ispezionare la riga segnalata dal compilatore o l'indirizzo del crash
- Correggere la gestione dei puntatori, firme delle funzioni o flag del linker
- Ricompilare e verificare l'assenza di memory leak con Valgrind o ASan
gcc -Wall -Wextra main.c -o appDomande frequenti
Come risolvere l'errore Errore C Linker: undefined reference to `symbol` (Simbolo Non Definito nel Link) in C?
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.
Approfondimenti
- ISO/IEC C Standard / GCC Documentation documentazione_ufficiale