Неопределенные ссылочные ошибки в gcc при компиляции на другом компьютере - PullRequest
2 голосов
/ 20 марта 2012

Я написал программу (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

Понятия не имею, почему эта ошибка произошла только на одном компьютере вместо обоих.

Если вам нужна дополнительная информация, вы можете скачать пакет здесь .

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 20 марта 2012

Кажется, проблема в библиотеке nfc, но компоновщик не жалуется, что он отсутствует, поэтому что-то не так с ним.Попробуйте перекомпилировать это.Если это пакет, проверьте, что это та же версия, что и на другом сервере.

0 голосов
/ 20 марта 2012

Скорее всего, ваша nfc библиотека отсутствует или неправильно установлена ​​на вашем другом компьютере.

Одна из опций, которые вы передаете компоновщику, - -lnfc, который указывает ему ссылку на * 1005.* библиотека.Ваши ошибки исходят от компоновщика, который не может найти символы nfc_configure и другие символы nfc_.Это означает, что компоновщик не может найти эти символы.Проверьте установку библиотеки nfc.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...