質問: CentOSマシンでRubyバージョン1.9.3をコンパイルしていて、 make の実行中に、以下のエラーメッセージが表示されました。 コマンド。
EC_GROUP_new_curve_GF2m undeclared (first use in this function)
ossl_pkey_ec.cのコンパイル中にエラーが発生しました ファイル。
完全なエラーのスナップショットは次のとおりです。
# ./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
エラーを解決するのを手伝ってください。
解決策:
エラーメッセージEC_GROUP_new_curve_GF2mundeclared(この関数での最初の使用)での簡単なGoogle検索 これは、OpenSSLビルドを使用したRubyの既知のバグであるとほのめかしました。幸い、開発者はパッチで問題を修正しました。
Rubyをビルド(作成)する前に、以下の手順に従ってパッチを実行してください:
ステップ1 :現在の作業ディレクトリはRubyソースディレクトリだと思います。
ステップ2 :以下に示すようにパッチをダウンロードします:
# wget https://bugs.ruby-lang.org/attachments/download/3707/out.patch
# ls out.patch out.patch
ステップ3 :パッチを適用する必要のあるファイルを見つけます。上記のエラーメッセージから、バグが「ossl_pkey_ec.c」ファイルに存在することは明らかです。
# find . -name ossl_pkey_ec.c ./ext/openssl/ossl_pkey_ec.c
ステップ4 :ダウンロードしたパッチを実行する
# 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
これでパッチが完了しました。 Rubyをもう一度構築してみてください。
[Ruby_source_directory] # make
お役に立てば幸いです。