при запуске ./configure
dropbear он выдает сообщение об отсутствии zlib; однако я уже добавил префикс, т. е. --prefix
, чтобы указать на правильный каталог для zlib, но проблема все еще сохраняется.
Я пытаюсь собрать файлы в dropbear, запустив
#!/bin/bash
./configure --prefix=$HOME/Hi3536_SDK_V2.0.4.0/dropbear \
--with-zlib=$HOME/Hi3536_SDK_V2.0.4.0/zlib/include \
--host=arm CC=arm-hisiv400-linux-gcc
но, похоже, он не может определить локальный путь к zlib.
решение1
Параметр configure --prefix
используется для указания скрипту configure (и полученным файлам makefile), гдепомещатьпрограммы, которые будут установлены. Он не говорит, гдеполучатьзаголовочные файлы и библиотеки.
Чтобы указать скрипту конфигурации, где брать файлы, вам, возможно, придется настроить следующие переменные:
- CPPFLAGS (для каталогов, содержащих заголовочные файлы)
- LDFLAGS (для каталогов, содержащих библиотеки)
- LIBS (для реальных названий библиотек)
Вы можете передать эти значения в командной строке для настройки, например,
myheader=$HOME/junk/include
mylibs=$HOME/junk/lib
./configure CPPFLAGS="-I$myheader" LDFLAGS="-L$mylibs"
В продолжение разъяснения (которое следовало включить в вопрос)
когда я пытаюсь создать файлы в dropbear, запустив
#!/bin/bash ./configure --prefix=$HOME/Hi3536_SDK_V2.0.4.0/dropbear --with-zlib=$HOME/Hi3536_SDK_V2.0.4.0/zlib/include --host=arm CC=arm-hisiv400-linux-gcc
но похоже, что он не может определить локальный путь к zlib
Вы можете увидеть проблему, посмотрев на источникнастроить скрипт:
# Check if zlib is needed
AC_ARG_WITH(zlib,
[ --with-zlib=PATH Use zlib in PATH],
[
# option is given
if test -d "$withval/lib"; then
LDFLAGS="-L${withval}/lib ${LDFLAGS}"
else
LDFLAGS="-L${withval} ${LDFLAGS}"
fi
if test -d "$withval/include"; then
CPPFLAGS="-I${withval}/include ${CPPFLAGS}"
else
CPPFLAGS="-I${withval} ${CPPFLAGS}"
fi
]
)
То есть, он ожидает, что значение параметра будет именем пути к каталогу, который содержит как include
и lib
подкаталоги (или каталог, содержащий файлы, которые, как ожидается, будут находиться в этих подкаталогах). Комментарий показывает, что заданное значение было именем пути к include
(под)каталогу. Следующийпроверка компиляции/линковкине удастся:
AC_CHECK_LIB(z, deflate, , AC_MSG_ERROR([*** zlib missing - install first or check config.log ***]))
Вероятное решение: изменить эту опцию на
--with-zlib=$HOME/Hi3536_SDK_V2.0.4.0/zlib
решение2
Проверьте config.log
файл. Скорее всего, вы обнаружите повторяющиеся сообщения об ошибках -Wno-pointer-sign
.
Проблема не в том, что configure
не удаётся найти zlib, а в том, что configure
ожидается более новая версия GCC, чем та, которую вы используете, и GCC выдаёт ошибку из-за нераспознанного параметра командной строки. Всетесты проваливаются, просто тест zlib — первый, где провал оказывается фатальным.
Чтобы это исправить, отредактируйте configure
скрипт, удалив -Wno-pointer-sign
из параметров CFLAGS (у меня это было в строке 3135).