c - 如何处理 Makefile 来合并两个单独的程序

标签 c

我正在尝试使用:

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

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

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

...
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" 并将文件复制粘贴到同一目录中是行不通的。

最佳答案

您是否尝试通过将库代码片段直接复制到您的程序中来使用 NFC 库?我不明白那是如何运作的。您需要做的是 (a) 构建库或下载适合您平台的预编译版本,(b) 阅读有关库提供的 API 的文档,并在代码中使用该 API,以及 (c) 编译程序时,与库链接,可能通过添加 -lfreefare 或类似于 Makefile 中链接行的内容。 (该库的文档可能也应该告诉您如何执行此操作。)

关于c - 如何处理 Makefile 来合并两个单独的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17332464/

相关文章:

c - strlen函数的理解——const char *s赋值给const char *sc

调用 malloc() 会覆盖静态表

基于for循环增量的函数指针的C宏扩展

python - Python 中的 C 扩展 - 返回 Py_BuildValue() 内存泄漏问题

c - 为什么这个 IA32 汇编代码有 3 个真正的指令?

c++ - 如何在此函数中使用 millis() 而不是 for 循环

c - 在arduino中什么是SREG?

c - 在c中通过socket函数制作可靠的UDP

c - 优先队列 C

c - 为什么正则表达式不是 ISO C99 的一部分