2012-02-04 70 views
20

我想编译Donald Eastlake的RFC 3797随机选择算法的实现(代码:http://kambing.ui.ac.id/minix/other/rfc3797/)。但是,我得到一个链接错误:未定义引用`日志'

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

我试图与所提供的Makefile文件,其中明确对数学libraray链接,使,但我仍然得到错误:

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

如何我可以编译这个程序吗?

+1

您是否包含#include '? – Mysticial 2012-02-04 22:42:58

+4

你可以试试cc -o randomselection rfc3797.c MD5.c -lm吗? – cnicutar 2012-02-04 22:43:24

+1

@Shade不,没关系,我很高兴它正在工作:-)你可以接受fajrans的回答。这里有一个关于这个主题的[C FAQ](http://c-faq.com/lib/libsearch.html)。 – cnicutar 2012-02-04 23:02:52

回答

30

我不知道原因是什么,但是如果你将-lm移动到最后,它会编译。

$ 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

如果考虑链接库的完成方式,原因很简单。 – 2012-02-04 23:40:00

+0

为了扩展Kerrek所指的内容,并从上面的cnicutar借用,这解释了链接工作与引用参数顺序的关系:http://c-faq.com/lib/libsearch.html – staticfloat 2012-11-27 20:11:15