2012-02-04 12 views
20

Sto cercando di compilare l'implementazione dell'algoritmo di selezione casuale RFC 3797 di Donald Eastlake (codice: http://kambing.ui.ac.id/minix/other/rfc3797/). Tuttavia, io sono sempre un errore di linker:riferimento non definito a `log '

rfc3797.c:(.text+0xe7f): undefined reference to `log' 

che sto cercando di fare con la condizione Makefile, che collega in modo esplicito contro il Libraray matematica, ma ancora ottengo l'errore:

cc -lm -o randomselection rfc3797.c MD5.c 

Come posso compilare questo programma?

+1

"#include "? – Mysticial

+4

Puoi provare 'cc -o randomselection rfc3797.c MD5.c -lm'? – cnicutar

+1

@Shade No, va bene, sono contento che funzioni :-) Puoi accettare invece la risposta di fajrans. Ed ecco una [C FAQ] (http://c-faq.com/lib/libsearch.html) sull'argomento. – cnicutar

risposta

30

Non so quale sia il motivo, ma se si sposta -lm fino alla fine, verrà compilato.

$ cc -o randomselection rfc3797.c MD5.c -lm 
rfc3797.c: In function ‘getinteger’: 
rfc3797.c:183:3: warning: format not a string literal and no format arguments [-Wformat-security] 
+4

La ragione è abbastanza semplice se si pensa a come le librerie di collegamento sono fatte. –

+0

Per espandere ciò a cui Kerrek fa riferimento e prendendo in prestito da cnicutar sopra, questo spiega come funziona il collegamento con riferimento all'ordine degli argomenti: http://c-faq.com/lib/libsearch.html – staticfloat