zlib fehlt beim Konfigurieren von Dropbear

zlib fehlt beim Konfigurieren von Dropbear

beim Ausführen ./configurein Dropbear wird angezeigt, dass zlib fehlt. Ich habe jedoch bereits das Präfix hinzugefügt, also --prefix, um auf das richtige Verzeichnis für zlib zu verweisen, aber das Problem besteht weiterhin.

Ich versuche, die Dateien in Dropbear zu erstellen, indem ich

#!/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

aber es scheint, dass der Pfad zu zlib nicht lokalisierbar ist.

Antwort1

Mit der Option configure --prefixwird dem configure-Skript (und den daraus resultierenden Makefiles) mitgeteilt, wosetzendie Programme, die installiert werden. Es wird nicht angegeben, woerhaltenHeader-Dateien und Bibliotheken.

Um dem Konfigurationsskript mitzuteilen, wo Dateien abgerufen werden sollen, müssen Sie möglicherweise diese Variablen anpassen:

  • CPPFLAGS (für Verzeichnisse, die Header-Dateien enthalten)
  • LDFLAGS (für Verzeichnisse, die Bibliotheken enthalten)
  • LIBS (für die tatsächlichen Bibliotheksnamen)

Sie können diese Werte in der Befehlszeile an die Konfiguration übergeben, z. B.

myheader=$HOME/junk/include
mylibs=$HOME/junk/lib
./configure CPPFLAGS="-I$myheader" LDFLAGS="-L$mylibs"

Weiterführung der Klarstellung (die in die Frage hätte aufgenommen werden sollen)

wenn ich versuche, die Dateien in Dropbear zu erstellen, indem ich

#!/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

aber es scheint, dass es nicht möglich ist, den Pfad zu zlib zu lokalisieren

Sie können das Problem erkennen, indem Sie sich die Quelle für dieSkript konfigurieren:

# 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
    ]
)

Das heißt, es wird erwartet, dass der Optionswert der Pfadname eines Verzeichnisses ist, das sowohl die als auch includedie libUnterverzeichnisse enthält (oder ein Verzeichnis, das die Dateien enthält, die sich in diesen Unterverzeichnissen befinden sollen). Der Kommentar zeigt, dass der angegebene Wert der Pfadname des include(Unter-)Verzeichnisses war. Das FolgendeKompilierungs-/Linkprüfungwird versagen:

AC_CHECK_LIB(z, deflate, , AC_MSG_ERROR([*** zlib missing - install first or check config.log ***]))

Die wahrscheinliche Lösung: Ändern Sie diese Option in

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

Antwort2

Überprüfen Sie die config.logDatei. Wahrscheinlich werden Sie wiederholt Fehlermeldungen zu finden -Wno-pointer-sign.

Das Problem besteht nicht darin, dass configurezlib nicht gefunden wird, sondern darin, dass configureeine neuere Version von GCC erwartet wird als die von Ihnen verwendete, und GCC gibt einen Fehler aufgrund der nicht erkannten Befehlszeilenoption aus. Alledie Tests schlagen fehl. Es ist nur so, dass der Test für zlib der erste ist, bei dem ein Fehlschlag fatal ist.

Um dies zu beheben, bearbeiten Sie das configureSkript, um es -Wno-pointer-signaus den CFLAGS-Parametern zu entfernen (bei mir war es in Zeile 3135).

verwandte Informationen