Вопрос или проблема
После множества проблем, я думаю, что успешно установил/скомпилировал libnfc, используя эти инструкции.
Теперь я пытаюсь скомпилировать/установить mfcuk. Когда я дохожу до шага ./configure, получаю следующую ошибку:
Sam@Sam-PC /c/Users/Sam/Documents/mfcuk/mfcuk-read-only
$ ./configure
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.exe
checking for suffix of executables... .exe
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for a BSD-compatible install... /bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
./configure: line 3739: syntax error near unexpected token `LIBNFC,'
./configure: line 3739: `PKG_CHECK_MODULES(LIBNFC, libnfc >= $LIBNFC_REQUIRED_VERSION, , AC_MSG_ERROR([libnfc >= $LIBNFC_REQUIRED_VERSION is mandatory.]))'
Думаю, это связано с тем, что я неправильно указал что-то (pkg-config?), где находится libnfc? Любая помощь будет очень признательна.
Сообщение об “ошибке синтаксиса” обычно не то, что ожидается, если pkg-config не может найти модуль. Но возможно, что правильно установленный libnfc предоставит макрос LIBNFC
, который configure якобы не может найти.
Вы можете попробовать ./autogen.sh
, а затем снова запустить configure; это может помочь, если скрипт configure
, поставляемый по умолчанию, некорректен (autogen.sh
регенерирует configure
из configure.in
, при условии, что у вас установлены правильные зависимости (autoconf, automake, GNU make и, как правило, libtool).
Если это не сработает, вам нужно запустить ./configure –help и выяснить, какие переменные окружения нужно указать, чтобы вручную задать путь к заголовкам и библиотекам libnfc. Пути, которые нужно будет задать в окружении, будут зависеть от того, где (если вообще) вы установили libnfc… заголовочные файлы — это файлы .h, а библиотеки — это файлы .dll (или файлы .a, если вы компилируете статически).
У меня нет специфического опыта работы с mfcuk
, но автоконфигурирование должно работать одинаково между пакетами… У меня есть довольно большой опыт работы с autoconf на Windows/MinGW32. Так что пишите, если застрянете.
Если пакет, который вы компилируете, — это nfc-tools, то эта проблема описана в Issue 76: Compile libnfc-llcp – error.
Утверждается, что это было исправлено в ревизии r955, датируемой 18 октября 2011 года:
libnfc-llcp: установите mqueue.h и pkg-config как требования в configure.ac (исправляет Issue 76)
Вы можете попробовать получить более новую версию configure.ac, чтобы исправить ошибку.
Страница загрузки указывает, что последняя версия nfc-eventd-0.1.5.tar.gz из ноября 2011 года может быть полезна, или вы можете попробовать svn source.
.
Ответ или решение
Установка и компиляция программ на Windows, особенно таких специфических, как mfcuk, могут потребовать дополнительных настроек и понимания используемых инструментов сборки. Рассмотрим основные проблемы и их возможные решения, которые могут возникнуть при компиляции mfcuk и libnfc, используя предоставленную информацию.
Теория
Ошибка, с которой вы столкнулись, связана с синтаксисом в скрипте configure
: PKG_CHECK_MODULES(LIBNFC, libnfc >= $LIBNFC_REQUIRED_VERSION, , AC_MSG_ERROR([libnfc >= $LIBNFC_REQUIRED_VERSION is mandatory.]))
. Эта строка указывает на необходимость наличия пакета libnfc
определенной версии. Проблема может быть связана с неправильной настройкой pkg-config
, который отвечает за поиск библиотек.
Среди возможных причин ошибки:
- Несоответствующая версия
libnfc
или ее отсутствие. - Неправильная конфигурация переменных среды, указывающих на заголовочные файлы и библиотеки.
- Неактуальная версия
configure
скрипта, которая может не включать необходимые изменения для Windows.
Пример
Попробуем решить эту проблему с использованием автоматической генерации конфигурационного скрипта. Установка и компиляция на Windows могут быть усложнены отсутствием необходимых инструментов или несоответствующими путями к библиотекам.
Применение
Для начала, выполните следующие шаги:
-
Проверьте установленные зависимости. Для работы
./autogen.sh
вам понадобятсяautoconf
,automake
, GNUmake
и, как правило,libtool
. Убедитесь, что все эти утилиты установлены и добавлены в ваш PATH. -
Запустите autogen.sh. Если скрипт
configure
устарел, сгенерируйте его заново:./autogen.sh
Это обновит
configure
на основеconfigure.ac
. -
Установите правильные переменные среды. Возможно, вам нужно вручную указать пути к
libnfc
. Например:export PKG_CONFIG_PATH=/path/to/libnfc/lib/pkgconfig export C_INCLUDE_PATH=/path/to/libnfc/include export LIBRARY_PATH=/path/to/libnfc/lib
-
Обновите исходный код. Возможно, проблема уже была решена в более новой версии. Проверьте базу исходного кода на обновления:
svn source. -
Используйте текущие версии файлов зависимости. Обратитесь к странице скачивания nfc-tools, чтобы загрузить последние версии библиотек, необходимых для сборки.
Если все шаги выполнены верно, но проблема осталась, возможно потребуется дальнейший анализ конфигурационного файла и логов сборки. Если у вас возникнут дополнительные вопросы, мы рады помочь вам дальше.