2012-02-04 44 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