Question : Je compilais Ruby version 1.9.3 sur une machine CentOS et j'ai atterri avec le message d'erreur ci-dessous lors de l'exécution de make commande.
EC_GROUP_new_curve_GF2m undeclared (first use in this function)
L'erreur s'est produite lors de la compilation de ossl_pkey_ec.c fichier.
Voici l'instantané de l'erreur complète :
# ./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
Aidez-moi à résoudre l'erreur.
Solution :
Une simple recherche Google sur le message d'erreur EC_GROUP_new_curve_GF2m non déclaré (première utilisation dans cette fonction) a laissé entendre qu'il s'agit d'un bogue connu dans Ruby avec la construction OpenSSL. Heureusement, les développeurs ont résolu le problème avec un correctif.
Suivez les étapes ci-dessous pour exécuter le correctif avant de compiler (créer) Ruby :
Étape 1 :Je suppose que votre répertoire de travail actuel est le répertoire source de Ruby.
Étape 2 :Téléchargez le correctif comme indiqué ci-dessous :
# wget https://bugs.ruby-lang.org/attachments/download/3707/out.patch
# ls out.patch out.patch
Étape 3 :Découvrez le fichier que vous devez corriger. D'après le message d'erreur ci-dessus, il est clair que le bogue est présent dans le fichier "ossl_pkey_ec.c".
# find . -name ossl_pkey_ec.c ./ext/openssl/ossl_pkey_ec.c
Étape 4 :Exécutez le correctif téléchargé
# 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
Maintenant, le patch est fait. Essayez à nouveau de compiler Ruby.
[Ruby_source_directory] # make
J'espère que ça aide.