Forse la funzione main
è stata commentata a causa di esempio pre-elaborazione. Per sapere cosa sta facendo la pre-elaborazione, prova gcc -C -E es3.c > es3.i
quindi cerca con un editor il file generato es3.i (e cerca all'interno di esso il numero main
).
In primo luogo, si dovrebbe sempre (da quando sei un principiante) compila con
gcc -Wall -g -c es3.c
gcc -Wall -g es3.o -o es3
La bandiera -Wall
è estremamente importante, e si dovrebbe sempre usare. Indica al compilatore di darti (quasi) tutti gli avvertimenti. E dovresti sempre ascoltare gli avvertimenti, ad esempio correggere il file del codice sorgente es3.C
finché non ricevi altri avvisi.
Il flag -g
è importante anche perché richiede gcc
per inserire le informazioni di debug nel file oggetto e nell'eseguibile. Quindi è possibile utilizzare un debugger (come gdb
) per eseguire il debug del programma.
Per ottenere l'elenco di simboli in un file oggetto o un file eseguibile, è possibile utilizzare nm
.
Naturalmente, presumo che tu usi un sistema GNU/Linux (e ti invito a usare GNU/Linux se non lo usi già).
fonte
2011-11-01 13:58:06
Potrebbe essere una buona idea pubblicare il codice che causa questo errore. – Lundin
@BrandoSK: Quando seguo quel collegamento, ottengo un conto alla rovescia di 45 secondi. Inserisci il codice come parte della tua domanda o restringilo su un piccolo esempio che illustra il problema e pubblicalo. –
Ok, ho appena scaricato il file sorgente. (1) Si chiama 'es3_f3.c', non' es3.c'. (2) Contiene più errori, ad esempio un punto e virgola mancante nella riga 18. Non è possibile che sia stato compilato, il che significa che non è possibile ottenere abbastanza lontano da visualizzare l'errore del linker segnalato. Mostraci il tuo vero codice. (Il file sorgente scaricato è 73 righe, che è abbastanza breve da postare direttamente qui.) –