2013-06-26 7 views
0

Я пытаюсь использовать:Как обрабатывать Makefiles объединить две отдельные программы

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

создать новую программу, которые делают использование кода из обоих из них.

Я начал с копирования и вставки кода из mifare-classic-read-ndef.c (от libfreefare) до nfc-eventd.c и когда я бегу 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" и скопировать файлы в один каталог не удалось.

+0

Похоже, это принадлежит StackOverflow. Я заметил, что это модно, поскольку у меня нет мощности слияния. – Frank

+1

Вы пытались добавить '-lfreefare' в свою линию ссылок? –

+0

Спасибо, что сработал. Я добавил -lfreefare в строке AM_CFLAGS в nfc-eventd/src/Makefile.am – kapcom01

ответ

0

Вы пытаетесь использовать библиотеку NFC, скопировав фрагменты кода библиотеки непосредственно в свою программу? Я не вижу, как это может сработать. Что вам нужно сделать: (a) собрать библиотеку или загрузить предварительно скомпилированную версию для своей платформы, (б) прочитать документацию по API, которую предлагает библиотека, и использовать этот API в своем коде и (c) при компиляции вашей программы , ссылку на библиотеку, возможно, добавив -lfreefare или что-то похожее на линию ссылок в вашем файле Makefile. (Документация библиотеки должна, вероятно, рассказать вам, как это сделать.)

+0

Спасибо, что сработал. Я добавил -lfreefare в строке AM_CFLAGS в nfc-eventd/src/Makefile.am – kapcom01

Смежные вопросы