我写了一个程序(myreader.c)来操作RFID阅读器。
我在包的根目录中按类型“make”编译,makefile如下所示
# CC and CFLAGS are varilables
CC=gcc
CFLAGS = -c
# -c option ask g++ to compile the source files, but do not link.
# -g option is for debugging version
# -O2 option is for optimized version
OPTFLAGS = -O2 -g
myreader : src/myreader.c
$(CC) $(OPTFLAGS) src/myreader.c src/crypto1.c src/nfc-utils.c -lnfc -o ./bin/myreader
# clean all the .o and executable files
clean:
rm -rf bin/myreader
它在我的原始机器上运行良好(64位,Ubuntu 12.04 LTS),唯一的问题是,当我键入make时,会出现警告信息。
src/myreader.c:519:6: warning: conflicting types for ‘printResult’ [enabled by default]
src/myreader.c:211:3: note: previous implicit declaration of ‘printResult’ was here
但是/ bin / myreader效果很好。
但是,当我将软件包移动到另一台机器(64位,Ubuntu 11.10)时,以与原始机器相同的方式输入make。
出现以下错误消息:
berln@ubuntu:~/桌面/useful code$ make
gcc -O2 -g src/myreader.c src/crypto1.c src/nfc-utils.c -lnfc -o ./bin/myreader
src/myreader.c:519:6: warning: conflicting types for ‘printResult’ [enabled by default]
src/myreader.c:211:3: note: previous implicit declaration of ‘printResult’ was here
/tmp/ccrKvhjm.o: In function `mf_enhanced_auth':/home/berln/桌面/useful code/src/myreader.c:373: undefined reference to `nfc_configure'
/home/berln/桌面/useful code/src/myreader.c:380: undefined reference to `nfc_configure'
/home/berln/桌面/useful code/src/myreader.c:390: undefined reference to `nfc_configure'
/home/berln/桌面/useful code/src/myreader.c:434: undefined reference to `nfc_configure'
/tmp/ccrKvhjm.o: In function `mf_configure':
/home/berln/桌面/useful code/src/myreader.c:484: undefined reference to `nfc_configure'
/tmp/ccrKvhjm.o:/home/berln/桌面/useful code/src/myreader.c:489: more undefined references to `nfc_configure' follow
/tmp/ccrKvhjm.o: In function `main':
/home/berln/桌面/useful code/src/myreader.c:155: undefined reference to `nfc_connect'
/home/berln/桌面/useful code/src/myreader.c:213: undefined reference to `nfc_disconnect'
collect2: ld returned 1 exit status
make: *** [myreader] Error 1
我不知道为什么这个错误只发生在一台机器而不是两台机器上。
如果您需要更多信息,可以下载包here。
提前致谢。
答案 0 :(得分:1)
似乎问题出现在nfc
库中,但链接器并没有抱怨它丢失了,所以它有问题。尝试重新编译它。如果是包,请检查它是否与其他服务器上的版本相同。
答案 1 :(得分:0)
您的nfc
库很可能在其他计算机上丢失或未正确安装。
传递给链接器的其中一个选项是-lnfc
,它告诉它链接到nfc
库。您的错误来自链接器,它无法找到nfc_configure
和其他nfc_
符号。这意味着链接器无法找到这些符号。检查nfc
库安装。