在另一台机器上编译时,gcc中未定义的引用错误

时间:2012-03-20 15:40:26

标签: c gcc

我写了一个程序(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

提前致谢。

2 个答案:

答案 0 :(得分:1)

似乎问题出现在nfc库中,但链接器并没有抱怨它丢失了,所以它有问题。尝试重新编译它。如果是包,请检查它是否与其他服务器上的版本相同。

答案 1 :(得分:0)

您的nfc库很可能在其他计算机上丢失或未正确安装。

传递给链接器的其中一个选项是-lnfc,它告诉它链接到nfc库。您的错误来自链接器,它无法找到nfc_configure和其他nfc_符号。这意味着链接器无法找到这些符号。检查nfc库安装。