如何处理Makefile以合并两个单独的程序

时间:2013-06-26 23:55:02

标签: c

我正在尝试使用:

http://nfc-tools.org/index.php?title=Nfc-eventdhttps://code.google.com/p/libfreefare/

创建一个使用这两个代码的新程序。

我已经开始将代码从mifare-classic-read-ndef.c(从libfreefare)复制并粘贴到nfc-eventd.c,当我运行 make 时,我得到了预期的错误:< / p>

...
make[3]: Entering directory `/home/kapcom01/temp/nfc-eventd/src'
  CCLD   nfc-eventd
nfc-eventd.o: In function `main':
/home/kapcom01/temp/nfc-eventd/src/nfc-eventd.c:380: undefined reference to `freefare_get_tags'
/home/kapcom01/temp/nfc-eventd/src/nfc-eventd.c:387: undefined reference to `freefare_get_tag_type'
/home/kapcom01/temp/nfc-eventd/src/nfc-eventd.c:395: undefined reference to `freefare_get_tag_uid'
/home/kapcom01/temp/nfc-eventd/src/nfc-eventd.c:398: undefined reference to `freefare_get_tag_friendly_name'
/home/kapcom01/temp/nfc-eventd/src/nfc-eventd.c:407: undefined reference to `mifare_classic_connect'
/home/kapcom01/temp/nfc-eventd/src/nfc-eventd.c:470: undefined reference to `freefare_free_tags'
/home/kapcom01/temp/nfc-eventd/src/nfc-eventd.c:414: undefined reference to `mad_read'
/home/kapcom01/temp/nfc-eventd/src/nfc-eventd.c:418: undefined reference to `mad_nfcforum_aid'
/home/kapcom01/temp/nfc-eventd/src/nfc-eventd.c:418: undefined reference to `mifare_classic_nfcforum_public_key_a'
/home/kapcom01/temp/nfc-eventd/src/nfc-eventd.c:418: undefined reference to `mifare_application_read'
/home/kapcom01/temp/nfc-eventd/src/nfc-eventd.c:422: undefined reference to `tlv_decode'
collect2: error: ld returned 1 exit status
make[3]: *** [nfc-eventd] Error 1
make[3]: Leaving directory `/home/kapcom01/temp/nfc-eventd/src'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/kapcom01/temp/nfc-eventd/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/kapcom01/temp/nfc-eventd'
make: *** [all] Error 2

显然我必须以某种方式链接freefare.h以及libreefare的所有其他源文件,但我无法弄清楚如何...

只需#include "freefare.h"并将文件复制粘贴到同一目录中就无效了。

1 个答案:

答案 0 :(得分:0)

您是否尝试通过将库代码的各个部分直接复制到程序中来使用NFC库?我不明白这是怎么回事。您需要做的是(a)为您的平台构建库或下载预编译版本,(b)阅读有关库提供的API的文档,并在代码中使用该API,以及(c)编译程序时,链接到库,可能通过添加-lfreefare或类似于Makefile中的链接行的东西。 (图书馆的文档可能也应该告诉你如何做到这一点。)