2012-02-04 15 views
20

Próbuję skompilować implementację algorytmu doboru losowego RFC 3797 przez Donalda Eastlake'a (kod: http://kambing.ui.ac.id/minix/other/rfc3797/). Jestem jednak otrzymuję błąd linkera:niezdefiniowane odniesienie do `log '

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

staram się zrobić to za pomocą dostarczonego Makefile, który wyraźnie łączy przeciwko libraray matematyki, ale nadal pojawia się błąd:

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

Jak czy mogę skompilować ten program?

+1

Czy "#include "? – Mysticial

+4

Czy możesz spróbować 'cc -o randomselection rfc3797.c MD5.c -lm'? – cnicutar

+1

@Shade Nie, w porządku, cieszę się, że to działa :-) Zamiast tego możesz przyjąć odpowiedź fajrans. A tutaj jest [C FAQ] (http://c-faq.com/lib/libsearch.html) na ten temat. – cnicutar

Odpowiedz

30

Nie wiem, jaki jest tego powód, ale jeśli przeniesiesz -lm do końca, to się skompiluje.

$ 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

Powód jest dość prosty, jeśli myślisz o tym, jak robi się powiązanie bibliotek. –

+0

Aby rozwinąć to, o czym mówi Kerrek, i zapożyczać z powyższego rysunku, wyjaśniono, w jaki sposób działa linkowanie w odniesieniu do kolejności argumentów: http://c-faq.com/lib/libsearch.html – staticfloat

Powiązane problemy