Frage: Ich habe Ruby Version 1.9.3 auf einem CentOS-Rechner kompiliert und bin beim Ausführen von make mit der folgenden Fehlermeldung gelandet Befehl.
EC_GROUP_new_curve_GF2m undeclared (first use in this function)
Der Fehler ist beim Kompilieren von ossl_pkey_ec.c aufgetreten Datei.
Hier ist die Momentaufnahme des vollständigen Fehlers:
# ./configure
#make ossl_pkey_ec.c: In function âossl_ec_group_initializeâ: ossl_pkey_ec.c:761:17: warning: implicit declaration of function âEC_GF2m_simple method [-Wimplicit-function-declaration] method = EC_GF2m_simple_method(); ^ ossl_pkey_ec.c:761:24: warning: assignment makes pointer from integer without a cast [enabled by default] method = EC_GF2m_simple_method(); ^ ossl_pkey_ec.c:816:29: error: âEC_GROUP_new_curve_GF2mâ undeclared (first use in this function) new_curve = EC_GROUP_new_curve_GF2m; ^ ossl_pkey_ec.c:816:29: note: each undeclared identifier is reported only once for each function it appears in make[2]: *** [ossl_pkey_ec.o] Error 1 make[2]: Leaving directory `/root/ruby-1.9.3-p374/ext/openssl' make[1]: *** [ext/openssl/all] Error 2 make[1]: Leaving directory `/root/ruby-1.9.3-p374' make: *** [build-ext] Error 2
Helfen Sie mir, den Fehler zu beheben.
Lösung:
Eine einfache Google-Suche nach der Fehlermeldung EC_GROUP_new_curve_GF2m undeclared (first use in this function) angedeutet, dass es sich um einen bekannten Fehler in Ruby mit OpenSSL-Build handelt. Glücklicherweise hatten die Entwickler das Problem mit einem Patch behoben.
Führen Sie die folgenden Schritte aus, um den Patch auszuführen, bevor Sie Ruby erstellen (erstellen):
Schritt 1 :Ich nehme an, dass Ihr aktuelles Arbeitsverzeichnis das Ruby-Quellverzeichnis ist.
Schritt 2 :Laden Sie den Patch wie unten gezeigt herunter:
# wget https://bugs.ruby-lang.org/attachments/download/3707/out.patch
# ls out.patch out.patch
Schritt 3 :Finden Sie die Datei heraus, die Sie patchen müssen. Aus der obigen Fehlermeldung geht klar hervor, dass der Fehler in der Datei „ossl_pkey_ec.c“ vorhanden ist.
# find . -name ossl_pkey_ec.c ./ext/openssl/ossl_pkey_ec.c
Schritt 4 :Führen Sie den heruntergeladenen Patch aus
# patch ./ext/openssl/ossl_pkey_ec.c < out.patch patching file ./ext/openssl/ossl_pkey_ec.c Hunk #1 succeeded at 757 (offset -5 lines). Hunk #2 succeeded at 814 (offset -5 lines). patching file ./ext/openssl/ossl_pkey_ec.c Hunk #1 FAILED at 7. 1 out of 1 hunk FAILED -- saving rejects to file ./ext/openssl/ossl_pkey_ec.c.rej
Jetzt ist der Patch fertig. Versuchen Sie erneut, Ruby zu erstellen.
[Ruby_source_directory] # make
Hoffe es hilft.