Warum kann nicht Brennnessel 2.4 die "konfigurieren", finden die GMP-5.0.2?
Ich bin versucht zu bauen GnuTLS auf Mac OS X 10.5 (Leopard) Server (ja, ich weiß, es ist ein bisschen datiert, aber das ist, was dieser server läuft im moment) und bin mit in ein Thema Gebäude Brennnessel: ich habe gebaut & installiert GMP, aber die Brennnessel ist configure
kann es nicht finden.
Ich baute & installiert GMP 5.0.2 wie folgt (die GCC-version Lösung von hier):
curl -O ftp://ftp.gmplib.org/pub/gmp-5.0.2/gmp-5.0.2.tar.bz2
tar xjf gmp-5.0.2.tar.bz2
pushd gmp-5.0.2
CC=gcc-4.2 CXX=g++4.2 ./configure --prefix=/usr/local
make
sudo make install
popd
Einen make check
alle tests besteht und ich am Ende mit den folgenden GMP-Dateien installiert:
/usr/local/include/gmp.h
/usr/local/lib/libgmp.10.dylib
/usr/local/lib/libgmp.a
/usr/local/lib/libgmp.dylib
/usr/local/lib/libgmp.la
/usr/local/share/info/gmp.info
/usr/local/share/info/gmp.info-1
/usr/local/share/info/gmp.info-2
Jedoch, wenn ich versuche zu bauen, Brennnessel 2.4, wie folgt:
curl -O http://www.lysator.liu.se/~nisse/archive/nettle-2.4.tar.gz
tar xzf nettle-2.4.tar.gz
pushd nettle-2.4
./configure --prefix=/usr/local
make
sudo make install
popd
Es baut & erfolgreich installiert wurde, aber es nicht bauen libhogweed
weil GMP fehlt. Bei einer weiteren Untersuchung habe ich gefunden, dass die folgenden Warnhinweise in der configure
Ausgabe:
checking for __gmpz_getlimbn in -lgmp... no
configure: WARNING: GNU MP not found, or not 3.1 or up, see http://gmplib.org/.
Support for public key algorithms will be unavailable.
checking for __gmpz_powm_sec... no
Offensichtlich, GMP 5.0.2 ist neuer als 3.1, sowie '__gmpz_getlimbn' & '__gmpz_powm_sec' definiert sind, in /usr/local/include/gmp.h
, also alles über meine GMP-Installation scheint korrekt zu sein.
Ich habe versucht, alle Arten von configure
Optionen (insb. suchen für irgendeine Art von '--with-gmp " - option) ohne Erfolg. Ich habe auch versucht mit der gleichen version von GCC (CC=gcc-4.2 CXX=g++4.2 ./configure --prefix=/usr/local
) wie ich zu kompilieren, GMP, keine Veränderung im Ergebnis. --includedir
& --libdir
sollte $PREFIX/include
& $PREFIX/lib
bzw. (esp. da bin ich nicht die Angabe einer --exec-prefix
), so kann ich nicht herausfinden, warum es nicht in der Lage sein zu finden, GMP.
Anregungen wäre stark geschätzt.
Update:
Fand ich das folgende in config.log
erklären, den Fehler zu finden, GMP:
configure:6469: checking for __gmpz_getlimbn in -lgmp
configure:6494: gcc -o conftest -g -O2 conftest.c -lgmp >&5
ld warning: in /usr/local/lib/libgmp.dylib, file is not of required architecture
Undefined symbols:
"___gmpz_getlimbn", referenced from:
_main in ccNP0jza.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
configure:6494: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "nettle"
| #define PACKAGE_TARNAME "nettle"
| #define PACKAGE_VERSION "2.4"
| #define PACKAGE_STRING "nettle 2.4"
| #define PACKAGE_BUGREPORT "[email protected]"
| #define PACKAGE_URL ""
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define TIME_WITH_SYS_TIME 1
| #define SIZEOF_LONG 4
| #define HAVE_OPENSSL_BLOWFISH_H 1
| #define HAVE_OPENSSL_DES_H 1
| #define HAVE_OPENSSL_CAST_H 1
| #define HAVE_OPENSSL_AES_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_STRERROR 1
| #define HAVE_GCC_ATTRIBUTE 1
| #define HAVE_FCNTL_LOCKING 1
| /* end confdefs.h. */
|
| /* Override any GCC internal prototype to avoid an error.
| Use char because int might match the return type of a GCC
| builtin and then its argument prototype would still apply. */
| #ifdef __cplusplus
| extern "C"
| #endif
| char __gmpz_getlimbn ();
| int
| main ()
| {
| return __gmpz_getlimbn ();
| ;
| return 0;
| }
configure:6503: result: no
configure:6514: WARNING: GNU MP not found, or not 3.1 or up, see http://gmplib.org/.
Support for public key algorithms will be unavailable.
Läuft file /usr/local/lib/libgmp.dylib
gibt die folgenden:
/usr/local/lib/libgmp.dylib: Mach-O 64-bit dynamically linked shared library x86_64
Diesem server läuft ein Intel-Core-2-Duo-Prozessor, so dass 64-bit-Mach-Bibliothek sieht korrekt zu mir. Ich weiß nicht, wie zu sagen, ob Brennnessel versucht, gebaut für 32-bit-oder 64-bit-Architektur, also versuchte ich CC=gcc-4.2 CXX=g++4.2 ABI=64 ./configure --prefix=/usr/local
mit keine änderung (auch bei der Angabe ABI=32
Brennnessel ist configure
sagt immer "ABI: standard"... tut es nicht passieren ABI durch?).
Würde re-kompilieren von GMP als eine statische Bibliothek einen Unterschied machen? (Nein, GMP baut sowohl static & dynamic-Bibliotheken standardmäßig. Ich zählte sowohl über-als auch bei der Anzeige aller installierten Dateien.)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte das gleiche problem mit version 2.7. Die Art und Weise habe ich es endlich zur Arbeit zu zwingen, es zu sehen unter /usr/local via:
Keine Menge von spielen mit ./konfigurieren Sie die Optionen direkt bekommen würde libnettle zu erkennen libgmp für mich.
Es stellt sich heraus, es ist ein Fehler in
config.guess
im Lieferumfang Brennnessel 2.4 die nicht erkennen, die richtigen 32-bit/64-bit-Systemtyp unter Mac OS X, so war es standardmäßig auf 32-bit-und konnte nicht finden, dass Symbole in der GMP-Bibliothek (die zusammengestellt als eine 64-bit-Bibliothek). Wie die Brennnessel-Entwickler darauf hingewiesen hier, können Sie einfach laden Sie die neuesteconfig.guess
und oder deaktivieren assembler.Den neueren
config.guess
hat bei mir nicht funktioniert, so dass ich gezwungen es in die 64-bit-Modus und deaktiviert assembler. Die endgültige build-Anweisungen für Libnettle (und libhogweed; nicht einschließlich der GMP-Abhängigkeit) sind: