Pertanyaan: Saya mengkompilasi Ruby versi 1.9.3 pada mesin CentOS dan mendapatkan pesan kesalahan di bawah ini saat menjalankan make perintah.
EC_GROUP_new_curve_GF2m undeclared (first use in this function)
Kesalahan terjadi saat mengkompilasi ossl_pkey_ec.c berkas.
Berikut cuplikan kesalahan lengkapnya:
# ./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
Bantu saya mengatasi kesalahan.
Solusi:
Pencarian Google sederhana pada pesan kesalahan EC_GROUP_new_curve_GF2m tidak diumumkan (penggunaan pertama dalam fungsi ini) mengisyaratkan bahwa itu adalah bug yang dikenal di Ruby dengan build OpenSSL. Untungnya, para pengembang telah memperbaiki masalah ini dengan tambalan.
Ikuti langkah-langkah di bawah ini untuk menjalankan patch sebelum membangun (membuat) Ruby:
Langkah 1 :Saya berasumsi bahwa direktori kerja Anda saat ini adalah direktori sumber Ruby.
Langkah 2 :Download patchnya seperti gambar di bawah ini:
# wget https://bugs.ruby-lang.org/attachments/download/3707/out.patch
# ls out.patch out.patch
Langkah 3 :Cari tahu file yang perlu Anda tambal. Dari pesan error di atas, jelas bahwa bug tersebut ada di file ‘ossl_pkey_ec.c’.
# find . -name ossl_pkey_ec.c ./ext/openssl/ossl_pkey_ec.c
Langkah 4 :Jalankan patch yang diunduh
# 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
Sekarang tambalan sudah selesai. Coba buat Ruby lagi.
[Ruby_source_directory] # make
Semoga membantu.