2012-02-04 23 views
20

Estoy intentando compilar la implementación del algoritmo de selección aleatorio RFC 3797 por Donald Eastlake (código: http://kambing.ui.ac.id/minix/other/rfc3797/). Sin embargo, estoy consiguiendo un error de vinculador:referencia indefinida al `log '

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

que estoy tratando de hacerlo con la proporcionada Makefile, que vincula explícitamente en contra de la libraray matemáticas, pero todavía consigo el error:

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

Cómo ¿Puedo compilar este programa?

+1

¿'#include '? – Mysticial

+4

¿Puedes probar 'cc -o randomselection rfc3797.c MD5.c -lm'? – cnicutar

+1

@Shade No, está bien, me alegra que esté funcionando :-) Puedes aceptar la respuesta de fajrans en su lugar. Y aquí hay una [C Preguntas frecuentes] (http://c-faq.com/lib/libsearch.html) sobre el tema. – cnicutar

Respuesta

30

No sé cuál es el motivo, pero si mueve -lm hasta el final, compilará.

$ 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 razón es bastante directa si piensas cómo se hace la vinculación de bibliotecas. –

+0

Para ampliar a qué se refiere Kerrek, y tomar prestado de cnicutar arriba, esto explica cómo el enlace funciona con referencia al orden de los argumentos: http://c-faq.com/lib/libsearch.html – staticfloat