отсутствует zlib при настройке dropbear

Вопрос или проблема

Когда я запустил ./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.

Опция конфигурации --prefix используется для указания скрипту конфигурации (и полученным 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

Вы можете увидеть проблему, взглянув на исходный код скрипта конфигурации:

# Проверьте, нужен ли zlib
AC_ARG_WITH(zlib,
    [  --with-zlib=PATH        Использовать zlib в PATH],
    [
        # опция задана
        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 отсутствует - установите сначала или проверьте config.log ***]))

Вероятное решение: измените эту опцию на

--with-zlib=$HOME/Hi3536_SDK_V2.0.4.0/zlib

Проверьте файл config.log. Вероятно, вы найдете повторяющиеся сообщения об ошибках о -Wno-pointer-sign.

То, что происходит, не то, что configure не может найти zlib, а то, что configure ожидает более новую версию GCC, чем та, которую вы используете, и GCC выдает ошибку на нераспознанный параметр командной строки. Все тесты завершаются неудачей, просто тест для zlib – это первый, где неудача является фатальной.

Чтобы исправить это, отредактируйте скрипт configure, удалив -Wno-pointer-sign из параметров CFLAGS (для меня это было на строке 3135).

Ответ или решение

При конфигурации Dropbear вы столкнулись с ошибкой, касающейся отсутствия библиотеки zlib. Давайте разберемся с этой проблемой подробнее и предложим решения.

Причина проблемы

Ошибка, связанная с отсутствием zlib, может возникнуть из-за неправильного указания пути к библиотеке при выполнении команды ./configure. Ваша текущая команда выглядит следующим образом:

./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 находится по пути к папке include, однако скрипт конфигурации ожидает путь к каталогу, который содержит как заголовочные файлы, так и библиотечные файлы.

Рекомендации по исправлению

  1. Укажите корректный путь к zlib:
    Вам необходимо изменить опцию --with-zlib, указав путь к корневому каталогу zlib, а не к подкаталогу include. Попробуйте выполнить следующую команду:

    ./configure --prefix=$HOME/Hi3536_SDK_V2.0.4.0/dropbear \
               --with-zlib=$HOME/Hi3536_SDK_V2.0.4.0/zlib \
               --host=arm CC=arm-hisiv400-linux-gcc
  2. Дополнительные параметры конфигурации:
    Возможно, вам потребуется дополнительно указать флаги CPPFLAGS и LDFLAGS, чтобы правильно указать путь к заголовочным и библиотечным файлам zlib. Если ваши файлы находятся в стандартных каталогах, это может не потребоваться. Но для уверенности выполните следующую команду:

    ./configure --prefix=$HOME/Hi3536_SDK_V2.0.4.0/dropbear \
               CPPFLAGS="-I$HOME/Hi3536_SDK_V2.0.4.0/zlib/include" \
               LDFLAGS="-L$HOME/Hi3536_SDK_V2.0.4.0/zlib/lib" \
               --host=arm CC=arm-hisiv400-linux-gcc
  3. Проверьте конфигурационный файл:
    Если предыдущие шаги не помогли, не забудьте проверить файл config.log в каталоге, где вы выполняете конфигурацию. Найдите в нем сообщения об ошибках, которые могут указывать на неправильные пути или нехватку файлов.

Версии компилятора

Если вы видите сообщения об ошибке, связанные с опцией -Wno-pointer-sign, это может указывать на то, что скрипт конфигурации ожидает более новую версию компилятора GCC, чем та, что у вас установлена. Чтобы решить эту проблему:

  • Откройте файл configure и измените (или удалите) опцию -Wno-pointer-sign из параметров CFLAGS. Найдите строку, содержащую эту опцию (это может быть на строчке 3135 или другой) и удалите её.

Заключение

Следуя вышеуказанным рекомендациям, вы сможете успешно настроить и скомпилировать Dropbear с поддержкой zlib. Если возникнут дополнительные вопросы или сложности, не стесняйтесь обращаться за помощью.

Оцените материал
Добавить комментарий

Капча загружается...