Скрипт настройки cgminer не может найти установленную libusb
Я пытаюсь собрать cgminer в системе RISC-V 64. Я отлично скомпилировал его на aarch64 (Raspberry pi).
После установки libusb-dev и libusb1.1-1.dev и запуска ldconfig я все еще получаю эту ошибку из сценария настройки:
checking whether NULL can be used in arbitrary expressions... yes^M
checking for egrep... (cached) /usr/bin/grep -E^M
checking for syslog.h... yes^M
checking for size_t... yes^M
checking for working alloca.h... yes^M
checking for alloca... yes^M
checking for pthread_create in -lpthread... yes^M
checking for library containing addstr... -lncurses^M
./configure: line 10668: syntax error near unexpected token `LIBUSB,'^M
./configure: line 10668: ` PKG_CHECK_MODULES(LIBUSB, libusb-1.0, AC_DEFINE(HAVE_LIBUSB, 1, [Define if you have libusb-1.0]), AC_MSG_ERROR([Could not find usb library - please install libusb-1.0]))'
В разные моменты до этого autogen.sh предлагал мне повторно запустить автообновление, что я и сделал. Скрипт autogen.sh вообще дорабатываться тоже не хотел.
Кто-нибудь раньше видел синтаксическую ошибку в автоматически сгенерированном скрипте конфигурации?
1 ответ
Сценарий был сгенерирован в системе без установленного файла, поэтому макрос не был расширен в код оболочки, а сгенерированный сценарий не работает, поскольку содержит синтаксис, отличный от оболочки.
(Присутствие^M
символы также указывают на какую-то странность окончания строки Windows, которая может стать, а может и не стать реальной проблемой, как только вы исправите ошибку.)
Исправление правильного расширения макроса состоит из двух частей:
Вышестоящий cgminer должен исправить файл, включив в него строку
m4_pattern_forbid([PKG_CHECK_MODULES])dnl
Строка перед
PKG_CHECK_MODULES([LIBUSB], ...)
линия будет хорошим местом для этого.Это делает невозможным повторное создание такого испорченного файла.
Вы можете установить и перезапустить
autoreconf
регенерировать из . Затем он будет расширен до правильного шелл-кода, который сможет работать по назначению.pkg.m4
вероятно, является частью-dev
или-m4
подпакет разработки дляpkgconf
илиpkgconfig
упаковка.
Это всегда хорошая идея для тех, кто неAC_*
и не-AM_*
макрос, используемый в , поэтому, если этоconfigure.ac
не делает этого дляPKG_CHECK_MODULES
, он также может не сделать этого для других макросов, поэтому вы можете столкнуться с той же ошибкой позже с каким-либо другим макросом. Исправление то же: добавьтеm4_pattern_forbid
строку, чтобы предотвратить создание поврежденных файлов, а затем восстановитьconfigure
с соответствующими*.m4
файлы установлены.