beim Ausführen ./configure
in 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 --prefix
wird 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 include
die lib
Unterverzeichnisse 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.log
Datei. Wahrscheinlich werden Sie wiederholt Fehlermeldungen zu finden -Wno-pointer-sign
.
Das Problem besteht nicht darin, dass configure
zlib nicht gefunden wird, sondern darin, dass configure
eine 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 configure
Skript, um es -Wno-pointer-sign
aus den CFLAGS-Parametern zu entfernen (bei mir war es in Zeile 3135).