5.9.06

UNDEFINED REFERENCE TO

per evitare questo errore quando si compila un programma c o c++ si deve seguire questo consiglio:

Una o più librerie necessarie per il tuo programma non sono state
indicate sulla riga di comando di gcc (o ld). Per fare questo devi
utilizzare lo switch -l. Per convenzione le librerie sono chiamate
libnome.so , se sono dinamiche, oppure libnome.a , se sono statiche. Per
linkarle dinamicamente al tuo eseguibile devi passare a gcc l'opzione
-lnome (senza il prefisso "lib" ne` il suffisso ".so"). Per linkarle
staticamente devi invece linkare il file libnome.a all'eseguibile. Se le
librerie non si trovavano nel path di ricerca (man ld.so) gcc non sara`
in grado di trovarle. Per aggiungere una diretory al path di ricerca
devi usare lo switch -L (es: -L/home/foobar/mylibdir).



scusate lo sfogo .... ma era da una vita che cercavamo sta soluzione ... (IO E LA MIA ZITA) !!!!

5 commenti:

Anonimo ha detto...

ok...ho capito ma se il compilatore del mio codeblock mi da un errore del genere io ke devo fare...non vado mica a riga di comando...vorrebbe dire ke mi mancano degli include a delle librerie o ke mancano dei linker
????

Anonimo ha detto...

Devi andare su: Project -> Build Options -> scegli la scheda linker settings clicchi su add e gli dai la libreria da linkare

Anonimo ha detto...

la mia libreria e' un .h e con un altro file la legge semplicemente mettendo #include "list.h" ... invece con questo nuovo file di test che ho fatto, compilando con gcc mi dice:
test.c:(.text+0x17): undefined reference to `newemptylist'
dove newemptylist e' la prima funzione che chiama esternamente. La cosa ridicola e' che un'altra struttutra definita in list.h me la riconosce... :( non so che fare!!

fury66 ha detto...

ciao anche io ho questo problema, non riesco a linkare correttamente la libreria nel make file ho questa riga

-L/home/muccio/workspace/tentativo/udt4/src/udt

e la libreria da linkare si chiama libutd.so o libudt.a
potresti indicarmi passo passo come fare?

Anonimo ha detto...

salve a tutti, ho un problema ho modificato un protocollo, e dopo essermi assicurato della sua correttezza, ho provato a compilarlo con il comando make, ma in uscita ho il solito errore "undefined reference to (funzione che non riesce a trovare)" le ho provate tutte, ma non riesco a risolvere.. vi prego aiutatemi!!