Pregunta: Estaba compilando Ruby versión 1.9.3 en una máquina CentOS y aterricé con el siguiente mensaje de error mientras ejecutaba make comando.
EC_GROUP_new_curve_GF2m undeclared (first use in this function)
El error ocurrió al compilar ossl_pkey_ec.c archivo.
Aquí está la instantánea del error completo:
# ./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
Ayúdame a solucionar el error.
Una simple búsqueda en Google del mensaje de error EC_GROUP_new_curve_GF2m no declarado (primer uso en esta función) insinuó que es un error conocido en Ruby con la compilación OpenSSL. Afortunadamente, los desarrolladores solucionaron el problema con un parche.
Siga los pasos a continuación para ejecutar el parche antes de compilar (hacer) Ruby:
Paso 2 :Descargue el parche como se muestra a continuación:
# wget https://bugs.ruby-lang.org/attachments/download/3707/out.patch
# ls out.patch out.patch
Paso 3 :Averigüe el archivo que necesita parchear. Del mensaje de error anterior, está claro que el error está presente en el archivo 'ossl_pkey_ec.c'.
# find . -name ossl_pkey_ec.c ./ext/openssl/ossl_pkey_ec.c
Paso 4 :Ejecute el parche descargado
# 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
Ahora el parche está hecho. Intenta compilar Ruby de nuevo.
[Ruby_source_directory] # make
Espero que ayude.